class A():
count = 0
def __init__(self):
A.count += 1
def exclaim(self):
print("I'm an A!")
@classmethod
def kids(cls):
print("A has", cls.count, "little objects.")
easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
print(easy_a.count)
输出:
A has 3 little objects.
3
类属性count记录了类A被实例化了多少次,相当于A这个“抽象类”的属性,而每一个实例都会得到这个count,所以easy_a.count的值也是3。
如果把count改为初始化时只修改实例的count值,那么A的count始终是0,而各个实例的count是1。
class A():
count = 0
def __init__(self):
self.count += 1
def exclaim(self):
print("I'm an A!")
@classmethod
def kids(cls):
print("A has", cls.count, "little objects.")
easy_a = A()
breezy_a = A()
wheezy_a = A()
A.kids()
print(easy_a.count)
输出:
A has 0 little objects.
1
参考资料:《Python语言及其应用》【美】卢巴诺维奇 著