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

Cam*_*eng 1 python

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

class Name:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

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

name1 = Name("Cameron")
print(name1)
Run Code Online (Sandbox Code Playgroud)

然后我删除了这个类:

del Name
Run Code Online (Sandbox Code Playgroud)

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

# still returns 'Cameron'
print(name1)
Run Code Online (Sandbox Code Playgroud)

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

use*_*ica 5

del并不意味着"破坏这件事".这意味着"取消分配此变量".对引用的变量的对象的其他引用不受影响,只要该对象可通过某些引用链到达,它就不会被销毁.

当你执行

del Name
Run Code Online (Sandbox Code Playgroud)

Name变量消失了,但Name类用来指变量仍然存在.name1有一个参考其类型,所以它将继续正常工作.

  • +1.特别是,`name1 .__ class__`就是那个参考. (2认同)