python - 调用静态方法的惯用方式

标签 python static-methods

类内调用静态方法的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()

这将打印 42121 因为 self.do_something(52) 使用 method resolution orderSomeClass.do_something(52) 始终引用相同的方法(除非名称 SomeClass 绑定(bind)到不同的对象)。

关于python - 调用静态方法的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72443711/

相关文章:

python - 删除某个子节点之后的子节点

python - 如何在迭代 pandas 数据框时提高性能?

python - Django为 "Fully Loaded"后如何运行任意代码

java - 局部范围静态方法的 Power Mock 单元测试

c++ - 了解模板和函数指针

c++ - 具有静态(内联)方法的从未实例化类的基类

python - Flask SQLAlchemy db.create_all() 不创建数据库

Python 没有将完整的字符串写入文件

php - 静态对象中的魔术方法

java - 完成后,从 AsyncTask 终止网络服务发现而不会泄漏