Python:静态方法与类方法的区别

时间:2012-03-16 20:39:52

标签: python oop

  

可能重复:
  What is the difference between @staticmethod and @classmethod in Python?

  • 我在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?
- 哪些方案适合使用这些方法中的每一种?

1 个答案:

答案 0 :(得分:5)

classmethod传递了调用它的类'cls'。有关详细信息,请参阅:What is the difference between @staticmethod and @classmethod in Python?