class Person(object):
__count = 0
def __init__(self, name):
self.name = name
Person.__count += 1#这里的这个代码不是应该写在def外部吗,即__count=0后面啊
print Person.__count #这里的print是从实例访问类属性??
p1 = Person('Bob')
p2 = Person('Alice')
try:
print Person.__count#这里的print是从类访问类属性??
except AttributeError:
print 'attributeerror'
2 回答

孤独的小猪
TA贡献232条经验 获得超302个赞
对的,楼上说的是正确的。Person.__count += 1写在init函数内部,是为了计算声明了几个实例,因为只有当类实例化后,才会调用init函数。而如果写在外面的话,就没有意义了。后面的print打印的结果的确是从实例访问类属性。

BlackStars
TA贡献3条经验 获得超0个赞
Person.__count +=。要创建了一个新的实例才会调用 __init__这个函数,从而count才应该+1.如果放外面,就无法计算声明了几个实例。你的第二个第三个问题,都只是从类访问类属性。
添加回答
举报
0/150
提交
取消