[英]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.