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

时间:2015-03-06 04:49:17

标签: python class instance

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;后者没有。

谢谢。

2 个答案:

答案 0 :(得分:5)

由于将f()作为staticmethod很愚蠢,run()几乎不应该使用(如果不是直接的话)。

使用静态方法存在(可疑)原因,并且有理由将实例变量显式传递给方法,但这是两个都没有的例子。

答案 1 :(得分:1)

Python中的

staticmethod装饰器意味着可以在不初始化实例的情况下直接调用此方法。 静态方法通常用作通用接口。 但是实例方法总是只能由实例本身使用。 因此,在处理将实例变量(self.x)传递给实例方法时,最好使用run2().