考虑以下python片段
spoon = 2 + 2
print spoon
def spoon(x):
return x + 3
print spoon
spoon = 'foo'
print spoon
在这里,我们使用相同的名称来创建新对象。我的疑问是我们如何访问我们创建的第一个对象中的数据。即,我如何访问存储在勺子中的 4。虽然名称空间指向一个新的 id,但旧对象仍然存在,所以我问是否有访问这些对象的内容?
考虑以下python片段
spoon = 2 + 2
print spoon
def spoon(x):
return x + 3
print spoon
spoon = 'foo'
print spoon
在这里,我们使用相同的名称来创建新对象。我的疑问是我们如何访问我们创建的第一个对象中的数据。即,我如何访问存储在勺子中的 4。虽然名称空间指向一个新的 id,但旧对象仍然存在,所以我问是否有访问这些对象的内容?
你不能。一旦对象变得不可访问,它就会被释放。如果对象受到引用计数,解释器可能会立即发现这一点。在那种情况下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!
>>>