当从 Python 类中的常规实例方法访问静态方法时,有 2 个不同的选项似乎都有效 - 通过 self
对象访问,以及通过类名本身访问,例如
class Foo:
def __init__(self, x: int):
self.x = x
@staticmethod
def div_2(x: int):
return x / 2
def option_1(self):
return Foo.div_2(self.x)
def option_2(self):
return self.div_2(self.x)
有什么理由比另一种更喜欢一种方式吗?
最佳答案
两者做了不同的事情:Foo.div_2
调用了Foo
的方法;相反,self.div_2
可能会调用不同的方法,如果 self
如果派生自 Foo
的类的实例:
class Bar(Foo):
@staticmethod
def div_2(x: int):
return x * 2
b = Bar(12)
print(b.option_1()) # prints 6.0
print(b.option_2()) # prints 24
关于python - 从类实例中访问静态方法的正确/首选方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040471/