免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2029 | 回复: 2
打印 上一主题 下一主题

[请教]映射list为何会影响不相关的类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-20 22:59 |只看该作者 |倒序浏览
初学python,写了如下代码,但是运行过程中抛出异常:
import sys,os
import random

class Person:
    population = 0
    def __init__(self, name):
        self.name = name
       &nbsperson.population += 1
    def __del__(self):
        print "%s says goodbye" %self.name
       &nbsperson.population -= 1
        
    def print_name(self):
        print "population=", Person.population, ", name=", self.name
        
p = Person("aaronpan")
p.print_name()

p2 = Person("yangyan")
p2.print_name()

randnum = []
for index in range(0,100):
    randnum.append(random.randint(0, 99))
 
print "len(randnum)= ", len(randnum)
randnum.sort()

num_count = [0 for i in range(0, 100)]     #注释1

#for item in randnum:
#    num_count[item] += 1
    
#print num_count

#alias_person = Person
p3 = Person("new_s")
#print type(Person)
#print type(alias_person)
p3.print_name()

p4 = Person("delete")
p4.print_name()

异常如下:
population= 1 , name= aaronpan
population= 2 , name= yangyan
len(randnum)=  100
population= 3 , name= new_s
population= 4 , name= delete
yangyan says goodbye
delete says goodbye
aaronpan says goodbye
new_s says goodbye
Exception exceptions.AttributeError: "'NoneType' object has no attribute 'population'" in <bound method Person.__del__ of <__main__.Person instance at 0x00B538C8>> ignored
如果将“注释1”行代码注释掉,或将p3,p4两个对象放在“注释1”行的前面,则不抛异常

哪位能帮我解释一下啊?

论坛徽章:
0
2 [报告]
发表于 2008-05-21 08:53 |只看该作者
我这儿跑的没有异常

论坛徽章:
0
3 [报告]
发表于 2008-05-21 17:42 |只看该作者
可能是解释器的原因,这个__del__是解释器调的,在程序要退出的时候,C++这样写没啥问题,python就不一定了,如果你__del__里只是输出名字,没有变量的引用的话,是没问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP