python - 从类实例中访问静态方法的正确/首选方法

标签 python class oop static-methods

当从 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/

相关文章:

python - 如何在 python 中实例化类型提示的类?

python - 在 Python 中调整日期时区的优雅方式

c# - 需要一些帮助来理解继承

class - 我怎样才能 Jest 模拟 aws-sdk?

c - C中的面向对象

python - Matplotlib - 显示具有代表相同值的多种颜色的图例

python - 当多行不以点结尾时合并多行

swift - 使用带有 getter 和 setter 的类或结构来计算关系的属性

c# - ASP.NET 设计问题 - 工厂与动态选择代码隐藏(如果可能的话)

php - 如果单例不好,那么为什么服务容器是好的?