0

考虑以下python片段

spoon = 2 + 2

print spoon

def spoon(x):
    return x + 3

print spoon

spoon = 'foo'

print spoon

在这里,我们使用相同的名称来创建新对象。我的疑问是我们如何访问我们创建的第一个对象中的数据。即,我如何访问存储在勺子中的 4。虽然名称空间指向一个新的 id,但旧对象仍然存在,所以我问是否有访问这些对象的内容?

4

1 回答 1

2

你不能。一旦对象变得不可访问,它就会被释放。如果对象受到引用计数,解释器可能会立即发现这一点。在那种情况下4,你设置的那一刻就消失spoonfoo

考虑这个不完美的例子进行演示

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!
>>> 
于 2013-09-03T06:08:49.963 回答