2015-10-14 123 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 
相關問題