【问题标题】:Exception AttributeError: "type object 'instance' has no attribute异常AttributeError:“类型对象'实例'没有属性
【发布时间】:2015-10-14 03:25:44
【问题描述】:

我在 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 python-2.7 class


【解决方案1】:

假设缩进不是一个实际问题,那么代码中的真正问题是,当解释器退出时,它会垃圾收集它已分配的所有对象(不再有引用)。

在 Python 中,类也是对象,因此类也会被垃圾回收。在这种情况下,kucing 类在其实例被垃圾收集之前被垃圾收集。

因此,当实例被垃圾回收时,它的 __del__ 被调用,它试图访问 - kucing.jumlah_ada - 但这是不可访问的,因此导致 NoneType AttributeError 。解决此问题的一种简单方法是将 __del__() 方法更改为 -

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2019-06-08
    • 2022-01-12
    • 2016-11-18
    • 2019-02-25
    相关资源
    最近更新 更多