__del__上的Python attributeError
| 
                         我有一个 python类对象,我想分配一个类变量的值 class Groupclass(Workerclass):
    """worker class"""
    count = 0
    def __init__(self):
        """initialize time"""
        Groupclass.count += 1
        self.membercount = 0;
        self.members = []
    def __del__(self):
        """delte a worker data"""
        Groupclass.count -= 1
if __name__ == "__main__":
    group1 = Groupclass() 
 这个执行结果是正确的,但是有一个错误消息说: Exception AttributeError: "'NoneType' object has no attribute 'count'" in <bound method Groupclass.__del__ of <__main__.Groupclass instance at 0x00BA6710>> ignored 有人可以告诉我我做错了什么吗? 解决方法您的__del__方法假定该类在调用时仍然存在.这个假设是不正确的.当您的Python程序退出时,Groupclass已被清除,现在设置为None. 测试全局对类的引用是否仍然存在: def __del__(self):
    if Groupclass:
        Groupclass.count -= 1 
 或者使用type()获取本地引用: def __del__(self):
    type(self).count -= 1 
 但请注意,这意味着如果Groupclass被子类化(每个子类获取.count属性,而仅具有.count属性的Groupclass),则计数更改的语义将更改. 引用__del__钩子文档: 
 如果您使用Python 3,则需要另外两个注意事项: > CPython 3.3自动将randomized hash salt应用于全局词典中使用的str键;这也会影响全局变量的清除顺序,也可能只在一些运行中看到问题. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
