为什么代码会打印两次输出
p1 = Person('Bob')
p2 = Person('Alice')
print Person.__count
p1、p2实例并没被调用啊,怎么会打印出1、2呢 。我的理解只有print Perso.__count // 2 吧
但是上一章不是说__开头的属性不会被外部访问到吗?那就应该是直接报错,没有输出才对啊
p1 = Person('Bob')
p2 = Person('Alice')
print Person.__count
p1、p2实例并没被调用啊,怎么会打印出1、2呢 。我的理解只有print Perso.__count // 2 吧
但是上一章不是说__开头的属性不会被外部访问到吗?那就应该是直接报错,没有输出才对啊
2016-02-29
题主是说的答案里的打印问题是吗?
其实是这样的,要先了解一下问题,Person这个类中__init__这个函数是什么意思。
p1 = Person('Bob')
这句话就意味着,p1进行了初始化,也就是说,调用了Person.__init__(p1,'Bob')这个函数,因此会的打印出来1,2
第二个问题:Person.__count是私有的,不能被外部访问,这是正确的,但我们执行以下代码时,是在Person类里面执行的。
def __init__(self, name): Person.__count=Person.__count+1 self.name=name print Person.__count
也就是说,初始化时,类里面进行了相关调用,而我们是无法将这个带到外面的,所以
p1.__count一定是错的。
以上,不知道能不能回答题主疑问。
举报