我想知道关于类和静态方法的最佳实践是什么。
考虑一下下面的类
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这两种方法给出了相同的结果,但其中一种方法比另一种更受欢迎吗?
发布于 2019-11-03 07:12:56
如果你在使用类变量,你肯定想使用@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的变量。
https://stackoverflow.com/questions/58676012
复制相似问题