class Person(object): __count = 0 @classmethod def how_many(cls): return cls.__count def __init__(self, name): self.name = name Person.__count = Person.__count + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()
1 回答
已采纳
清波
TA贡献165条经验 获得超90个赞
关于 @classmethod 和 @staticmethod 都是 Python的装饰器,具体区别,可以搜索得知, 直接回答题主的问题:
第一个print 就是直接调用 Person 的 类方法(classmethod), 打印的其实是 Person 的属性 __count, 这个时候 __count = 0, 所以打印出来的是0.
第二个print 是在 Person 实例化一次之后,对象的实例化,会首先调用 其__init__ 方法, 这时__count 加1 也就变成了1, 所以 打印出来的是1.
添加回答
举报
0/150
提交
取消