注册 登录
编程论坛 Python论坛

请帮助找一下问题在哪里。Python初学

duweix 发布于 2011-08-25 15:52, 696 次点击
我使用的是Python 2.7 (r27:82500, Sep 16 2010, 18:03:06),系统是Fedora 14。
程序执行时除了一些正常的输出外,最后还报告以下错误:
Exception AttributeError: "'NoneType' object has no attribute 'population'" in <bound method Person.__del__ of <__main__.Person instance at 0xb77357cc>> ignored
请大家帮看看是哪里有问题呢?谢谢!
以下是程序源代码(代码来源于《简明Python教程》http://):
程序代码:
#!/usr/bin/python
#
filename : objvar.py

class Person:
    '''Represents a person.'''
    population = 0

    def __init__(self, name):
        '''Initializes the person' 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

duwei = Person('duwei')
duwei.sayHi()
duwei.howMany()

kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany()

duwei.sayHi()
duwei.howMany()


1 回复
#2
外部三电铃2011-08-25 22:26
__del__是执行销毁任务的,也就是说Person已经被销毁了,当然再调用Person.population就会出错了,可能在以前的版本不出错,但我的2.5版本会出错,2.5以后的应该都会提示出错
1