我在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
我试图解决它,但我仍然不能。
对此问题有任何想法吗?
答案 0 :(得分:0)
假设缩进不是一个实际问题,代码中的真正问题是,当解释器退出时,它会垃圾收集它已分配的所有对象(不再有引用)。
在Python中,类也是对象,因此类也会被垃圾收集。在这种情况下,类 <?php
$myfile = fopen("newFile.txt", "w") or die("Unable to open file!");
$txt= 'Option 1 ' ."\t" .'Option 2 ' ."\r\n"
.$_POST['option1'] ."\t" .$_POST['option2']."\r\n"
.$_POST['option3'] ."\t" .$_POST['option4'] ."\r\n".$_POST['option5'] ."\t" .$_POST['option6'] ."\r\n" ;
fwrite($myfile, $txt);
fclose($myfile);
?>
在其实例被垃圾收集之前被垃圾收集。
因此,当实例被垃圾收集时,会调用其kucing
,它会尝试访问 - __del__
- 但这是无法访问的,因此会导致kucing.jumlah_ada
。解决此问题的一种简单方法是将NoneType AttributeError
方法更改为 -
__del__()