Python: 将实例变量显式传递给实例方法是否更好?

Python: Is it better to explicitly pass instance variables to instance methods?

class A():
    def __init__(self):
        self.x = 3

    @staticmethod
    def f(x):
        return x ** 2

    def g(self):
        return self.x ** 2

    def run(self):
        self.f(self.x)

    def run2(self):
        self.g()

run()run2 哪个更好?前者显式传递实例变量self.x给函数f;后者没有。

谢谢。

因为将 f() 作为 staticmethod 是愚蠢的,所以几乎不应该(如果不是完全不)使用 run()

使用静态方法有(可疑的)理由,显式将实例变量传递给方法也有理由,但这两者都不是。

staticmethod装饰器在Python意味着这个方法可以直接调用而不用初始化一个实例。 静态方法通常用作通用接口。 但是实例方法总是只能被实例本身使用。 所以在处理将实例变量(self.x)传递给实例方法时,最好使用run2().