所以我今天在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)
有人能告诉我为什么会这样吗?
del并不意味着"破坏这件事".这意味着"取消分配此变量".对引用的变量的对象的其他引用不受影响,只要该对象可通过某些引用链到达,它就不会被销毁.
当你执行
del Name
Run Code Online (Sandbox Code Playgroud)
该Name变量消失了,但Name类用来指变量仍然存在.name1有一个参考其类型,所以它将继续正常工作.
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |