异常AttributeError:“类型对象'实例'没有属性

时间:2015-10-14 03:25:45

标签: python python-2.7 class

我在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

我试图解决它,但我仍然不能。

对此问题有任何想法吗?

1 个答案:

答案 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__()