从类内调用静态方法的Pythonic方式是什么?
class SomeClass:
@staticmethod
def do_something(x: int) -> int:
return 2*x + 17
def foo(self) -> None:
print(self.do_something(52)) # <--- this one?
print(SomeClass.do_something(52)) # <--- or that one?
最佳答案
这完全取决于您的用例,因为在子类化的上下文中,这两种方法执行不同的操作。考虑以下因素:
class OtherClass(SomeClass):
@staticmethod
def do_something(x: int) -> int:
return 42
OtherClass().foo()
这将打印 42
和 121
因为 self.do_something(52)
使用 method resolution order而 SomeClass.do_something(52)
始终引用相同的方法(除非名称 SomeClass
绑定(bind)到不同的对象)。
关于python - 调用静态方法的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72443711/