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
;后者没有。
谢谢。
答案 0 :(得分:5)
由于将f()
作为staticmethod
很愚蠢,run()
几乎不应该使用(如果不是直接的话)。
使用静态方法存在(可疑)原因,并且有理由将实例变量显式传递给方法,但这是两个都没有的例子。
答案 1 :(得分:1)
staticmethod
装饰器意味着可以在不初始化实例的情况下直接调用此方法。
静态方法通常用作通用接口。
但是实例方法总是只能由实例本身使用。
因此,在处理将实例变量(self.x
)传递给实例方法时,最好使用run2().