考虑以下python代码段
spoon = 2 + 2
print spoon
def spoon(x):
return x + 3
print spoon
spoon = 'foo'
print spoon
这里我们使用相同的名称来创建新对象。我怀疑的是我们如何访问我们创建的第一个对象中的数据。即,如何访问存储在勺子中的4。虽然名称空间指向一个新的id,但仍旧旧对象存在,所以我要问是否有访问这些对象的内容?
答案 0 :(得分:2)
你做不到。一旦对象变得无法访问,它就会被释放。如果对象受引用计数,解释器可以立即找到这个。在这种情况下,4
在您将spoon
设置为foo
时就已消失。
考虑这个不完美的示例
class Foo(object):
def __del__(self):
print "tell my wife I love her!"
>>> f = Foo()
>>> def f():
... print 'Make room for thy beloved king!'
...
tell my wife I love her!
>>>