Python UnboundLocalError:在assignmen之前引用了局部变量“obj”

2024-10-01 09:41:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须定义一个类方法,删除该类的实例。代码框架如下:

class baseClass(object):

    def __init__(self):
        pass

    def fun(self):
        print 'Base Class'


class derivedClass(baseClass):

    def __init__(self):
        super(derivedClass, self).__init__()

    def fun(self):
        print 'Derived class'

    def exitfun(self):
        print 'Delete Object Instance'
        del obj

obj = derivedClass()
obj.fun()
obj.exitfun()

我得到以下错误:

^{pr2}$

除了打电话

del <object> 

在Main中,是否有其他方法通过成员函数删除类的实例。 提前谢谢!在


Tags: 实例方法selfobj定义objectinitdef
2条回答

使用关键字global可以解决您的问题:

def exitfun(self):
    global obj
    del obj

然而,这可能不是你想做的。为了定义类方法,您需要classmethod修饰符。另外,您可以在类级别保存实例,这样就不必通过globals来访问它:

^{pr2}$

Python有一个垃圾收集器,因此当没有更多的引用指向对象时,会从内存中删除该对象。 关键字del只是删除变量名和对象之间的绑定(引用)。如果不再引用该对象,则垃圾回收器将释放其内存。 使用del删除对象内部的对象是没有意义的,因为del本身不会触发任何删除。在

此外,在您的代码中有一个语法错误,实际上没有定义变量obj。您应该使用self从其中引用对象本身。在

相关问题 更多 >