所以我今天在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)
有人能告诉我为什么会这样吗?
答案 0 :(得分:5)
del
并不意味着“摧毁这件事”。这意味着“取消分配此变量”。对引用的变量的对象的其他引用不受影响,只要该对象可通过某些引用链访问,它就不会被销毁。
执行时
del Name
Name
变量消失了,但变量用来引用的Name
类仍然存在。 name1
引用了它的类型,因此它将继续正常工作。
答案 1 :(得分:2)
del
语句实际上删除对象。它删除了对象的引用。在这种情况下,当您实例化name1 = Name("Cameron")
时,您正在对该对象进行另一个引用。当您使用del Name
时,它只会移除其中一个。