#!usr/bin/python
class Person:
population = 0
def __init__(self,name):
self.name=name
print 'Initializing %s' %
self.name Person.population += 1
def __del__(self):
Person.population -= 1
if Person.population == 0:
print 'I am the last one.'
else:
print "There are still %d people left." %Person.population
print '%s says bye.' %
self.name wkm = Person("wang")
ztt = Person("ztt") #第20行
程序执行结果:
Initializing wang
Initializing ztt
There are still 1 people left.
wang says bye.
Exception exceptions.AttributeError: "'NoneType' object has no attribute 'population'" in <bound method Person.__del__ of <__main__.Person instance at 0x7f6eac025368>> ignored
但是如果将第20行的对象ztt改名之后,也不一定好使,比如,改成zhaoyu之后程序正常运行,
执行结果如下:
Initializing wang
Initializing zhaoyu
There are still 1 people left.
zhaoyu says bye.
I am the last one.
wang says bye.
但如果改成z之后,执行结果就又跟ztt的时候一样了。
也就是说这段程序,出错还是不出错 跟对象名有关,这是为什么呢?
python版本:Python 2.5.2
系统信息:Ubuntu 10.04
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/15550
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.