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().
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().