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 に答える