最佳实践:类/静态方法

时间:2019-11-02 23:01:02

标签: python

我想知道关于类和静态方法的最佳实践是什么。

考虑以下课程

class A:
    number = 0

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

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

两者给出的结果相同,但是一种方法优先于另一种方法吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是类变量,则肯定要使用@classmethod,而不要使用@staticmethod。想象一下,B类扩展了A类:

class A:
    number = 0

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

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

class B(A):
    pass


B.number = 10

B.add_int_m(1)  # returns 11
B.add_int_k(1)  # returns 1

静态方法add_int_k仍使用类A的变量。