可能重复:
Python中的@staticmethod和@classmethod有什么区别?
- 我正在python中学习OOP,并了解了这两种方法
- 语法上的区别似乎是类方法隐式地传递了它们所属的类作为它们的第一个参数
class Circle: all_circles = [] # class variable @staticmethod def total_area(): for c in Circle.all_circles: # hardcode class name # do somethig @classmethod def total_area(cls): for c in cls.all_circles: # no hardcode class name # do something
我认为类方法更灵活,因为我们不硬编码类
问题:
-这甚至是一个问题,哪一个更好@staticmethod还是@classmethod
-这些方法中的每一种都适合使用哪些场景?
一个classmethod将被调用的类"cls"传递给它。有关更多详细信息,请参阅:Python中@staticmethod和@classmethod之间的区别是什么?