删除类后使用类方法和变量

时间:2014-02-13 23:42:42

标签: python

所以我今天在Python IDLE Shell中搞乱了,我发现了一些东西。 我有一个这样的课程:

class Name:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return self.name

我创建了一个类的实例并打印出名称:

name1 = Name("Cameron")
print(name1)

然后我删除了班级:

del Name

但后来意识到我仍然可以使用'name1',就像从未发生过任何事情一样:

# still returns 'Cameron'
print(name1)

有人能告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:5)

del并不意味着“摧毁这件事”。这意味着“取消分配此变量”。对引用的变量的对象的其他引用不受影响,只要该对象可通过某些引用链访问,它就不会被销毁。

执行时

del Name

Name变量消失了,但变量用来引用的Name类仍然存在。 name1引用了它的类型,因此它将继续正常工作。

答案 1 :(得分:2)

del语句实际上删除对象。它删除了对象的引用。在这种情况下,当您实例化name1 = Name("Cameron")时,您正在对该对象进行另一个引用。当您使用del Name时,它只会移除其中一个。