本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the difference between @staticmethod and @classmethod in Python?
我正在学习python中的OOP,了解到这两种方法语法上的不同之处在于,类方法隐式地传递它们所属的类作为它们的第一个参数
1
2
3
4
5
6
7
8
9
10
11
12 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 ?-这些方法各适用于什么情况?
类方法传递它所调用的类"cls"。更多细节见:Python中的@staticmethod和@classmethod有什么区别?