簡體   English   中英

異常AttributeError:“類型對象'instance'沒有屬性

[英]Exception AttributeError: "type object 'instance' has no attribute

我在Python中得到了這個異常,

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

我已經嘗試修復它,但是我仍然不能。

關於這個問題有什么想法嗎?

假設縮進不是一個實際問題,那么代碼中的實際問題是,當解釋器退出時,它會垃圾收集其已分配的所有對象(不再有引用)。

在Python中,類也是對象,因此類也將被垃圾回收。 在這種情況下,類kucing在其實例被垃圾回收之前先被垃圾收集。

因此,當實例被垃圾回收時,其__del__被調用,它會嘗試訪問kucing.jumlah_ada但無法訪問,從而導致NoneType AttributeError 解決此問題的簡單方法是將__del__()方法更改為-

def __del__(self):
    if kucing:
        kucing.jumlah_ada -=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM