【问题标题】:Classmethod vs Function [duplicate]类方法与函数[重复]
【发布时间】:2020-02-16 08:15:52
【问题描述】:

我对类方法有点困惑:

考虑以下示例

class A:
    number = 0

    def add_int_n(n: int) -> int:
        return A.number + n

    @classmethod
    def add_int_m(cls, m: int) -> int:
        return cls.number + m

    @staticmethod
    def add_int_k(cls, k: int) -> int:
        return cls.number + k

我注意到前者和最后一个属于function 类,而第二个属于method 类。两者之间的根本区别是什么(如果有的话)?

【问题讨论】:

  • @gst 感谢您指出我的答案。您在使用方法或函数时有什么最佳实践吗?
  • 如果您确实需要访问类的实例,请使用实例方法。如果不这样做,请使用静态方法(尽管您应该考虑是否在类外使用常规函数;静态方法实际上只是存在于类名称空间中的函数)。类方法旨在作为替代构造函数;如果A.foo 是一个类方法,那么A(...)A.foo(...) 都应该返回A 的实例。

标签: python python-3.x class


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2012-11-03
    • 2020-12-15
    • 2020-10-10
    相关资源
    最近更新 更多