このウェブページから Python を学んでいます (中国語ですが、コードに注目してください)。そして、Windows 7 で Python 2.7.3 を使用して自分でコードを練習したいと考えています。しかし、オブジェクト名に非常に奇妙なエラーが見つかりました。 . コードは次のとおりです。
class Person:
'''Represents a person.'''
population = 0
def __init__(self, name):
'''Initializes the person\'s data.'''
self.name = name
print '(Initializing %s)' % self.name
# When this person is created, he/she
# adds to the population
Person.population += 1
def __del__(self):
'''I am dying.'''
print '%s says bye.' % self.name
Person.population -= 1
if Person.population == 0:
print 'I am the last one.'
else:
print 'There are still %d people left.' % Person.population
def sayHi(self):
'''Greeting by the person.
Really, that\'s all it does.'''
print 'Hi, my name is %s.' % self.name
def howMany(self):
'''Prints the current population.'''
if Person.population == 1:
print 'I am the only person here.'
else:
print 'We have %d persons here.' % Person.population
David = Person('David')
David.sayHi()
David.howMany()
kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany()
David.sayHi()
David.howMany()
これらのコードを実行すると、このエラー レポート (最後の 2 行) が表示されました。しかし、オブジェクト変数「David」を「Swaroop」またはその他の名前に置き換えると、コードは正常に機能します。これがどのように起こるかわかりません。
(Initializing David)
Hi, my name is David.
I am the only person here.
(Initializing Abdul Kalam)
Hi, my name is Abdul Kalam.
We have 2 persons here.
Hi, my name is David.
We have 2 persons here.
Abdul Kalam says bye.
There are still 1 people left.
David says bye.
Exception AttributeError: "'NoneType' object has no attribute 'population'" in <bound method Person.
__del__ of <__main__.Person instance at 0x00000000026D91C8>> ignored