Python论坛  - 讨论区

标题:[python-chinese] 答复: 答复: 答复: 类变量的问题!怪异!!

2007年07月02日 星期一 10:54

snoop hgli0904在gmail.com
星期一 七月 2 10:54:08 HKT 2007

哪位大虾能帮忙给解释一下。不解决担心以后再碰到类似的情况 

-----邮件原件-----
发件人: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn] 代表 lubiao
发送时间: 2007年6月29日 11:33
收件人: python-chinese at lists.python.cn
主题: Re: [python-chinese]答复: 答复: 类变量的问题!怪异!!

On 6/29/07, snoop <hgli0904 at gmail.com> wrote:
> 从错误信息"Exception exceptions.AttributeError: "'NoneType' object has no 
> attribute 'population'" in > <__main__.Person instance at 0xb7c413cc>> 
> ignored"来看,是类先del了。但是搞不懂为什么使用有
> 些变量(f、karlm)等不会被del,但是使用ff、fff、klarm等会被del。使用win和
> linux下的环境都这样
>

我猜 不是 不被 del ,而是 del 的 次序 不同, 次序 与名字相关,

我猜 引用名 装在 散列桶里, 没有次序。
_______________________________________________
python-chinese
Post: send python-chinese at lists.python.cn
Subscribe: send subscribe to python-chinese-request at lists.python.cn
Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese

下面的一段代码是从《简明Python教程》里面摘取出来的一个sample【问题的产生跟摘
取没有关系】。有个奇怪的问题,下面代码部分标记红色的变量使用不同的变量时会报
错!
如使用"karlm"、"f"等变量名时运行正常,但是使用"klarm"、"ff"、"fk"等时运行程
序会报错:
Exception exceptions.AttributeError: "'NoneType' object has no attribute
'population'" in <__main__.Person instance
at 0xb7c413cc>> ignored
没搞明白什么原因,哪位大虾指点一下!!

#!/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):
        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

if __name__ == "__main__":
        swaroop = Person('Swaroop')
        karlm = Person('Abdul Kalam') 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月06日 星期五 20:08

Paolo.lu paolo.lu在gmail.com
星期五 七月 6 20:08:24 HKT 2007

我python2.5 都没有什么问题。

在07-7-2,snoop <hgli0904 at gmail.com> 写道:
>
> 哪位大虾能帮忙给解释一下。不解决担心以后再碰到类似的情况
>
> -----邮件原件-----
> 发件人: python-chinese-bounces at lists.python.cn
> [mailto:python-chinese-bounces at lists.python.cn] 代表 lubiao
> 发送时间: 2007年6月29日 11:33
> 收件人: python-chinese at lists.python.cn
> 主题: Re: [python-chinese]答复: 答复: 类变量的问题!怪异!!
>
> On 6/29/07, snoop <hgli0904 at gmail.com> wrote:
> > 从错误信息"Exception exceptions.AttributeError: "'NoneType' object has no
> > attribute 'population'" in > > <__main__.Person instance at 0xb7c413cc>>
> > ignored"来看,是类先del了。但是搞不懂为什么使用有
> > 些变量(f、karlm)等不会被del,但是使用ff、fff、klarm等会被del。使用win和
> > linux下的环境都这样
> >
>
> 我猜 不是 不被 del ,而是 del 的 次序 不同, 次序 与名字相关,
>
> 我猜 引用名 装在 散列桶里, 没有次序。
> _______________________________________________
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070706/5726ee18/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号