2015-10-14 120 views
1

即时得到这个例外在Python,AttributeError异常:“对象类型‘实例’有没有属性

Exception AttributeError: "type object 'instance' has no attribute 'jumlah_ada'" in <bound method kucing.__del__ of <__main__.kucing instance at 0x7fe39d827e18>> ignored 

当我运行语法:

class kucing: 
     jumlah_ada = 0 
     def __init__(self, tipe): 
      self.tipe = tipe 
      kucing.jumlah_ada +=1 
     def __del__(self): 
      kucing.jumlah_ada -=1 
     def data_kucing(self): 
      print "Tipe : ",self.tipe 
      print "Jumlah kucing : ",kucing.jumlah_ada 

    kucing1 = kucing("Anggora") 
    kucing2 = kucing("Persia") 
    kucing3 = kucing("Himalayan") 


    print "jumlah kucing : ",kucing.jumlah_ada 

    kucing1.data_kucing() 
    del kucing2 
    print "jumlah kucing : ",kucing.jumlah_ada 

我试图修复它,但我还是不行。

是关于这个问题有什么想法?

+0

您能否修理您的缩进? –

回答

0

假设缺口是不是ACTU在你的代码中,真正的问题是,当解释器退出时,垃圾收集它分配的所有对象(不再有引用)。

在Python中,类也是对象,因此类也被垃圾收集。在这种情况下,类kucing在其实例被垃圾收集之前获取垃圾收集。

因此,当实例被垃圾收集时,它的__del__被调用,它试图访问 - kucing.jumlah_ada - 但这是不可访问的,因此导致NoneType AttributeError。解决此问题的一种简单方法是将__del__()方法更改为 -

def __del__(self): 
    if kucing: 
     kucing.jumlah_ada -=1 
相关问题