0
私はPythonのクラス変数がすべてのインスタンスに対して同じメモリ位置を持つことを認識しましたが、なぜインスタンスのクラス変数を変更しても他のインスタンスやクラス自体に影響しないのですか?以下のコードを参照してください:すべてのインスタンスに対してpythonのクラス変数が変更されないのですか?
class (object):
name = 'Donald '
def __init__(self):
self.x = 4
c = Sam()
z = Sam()
print hex(id(c.name)), hex(id(z.name)), hex(id(Sam.name))
print c.name, z.name
c.name = 'Trump'
print c.name, z.name, US_President.name
print hex(id(c.name)), hex(id(z.name)), hex(id(US_President.name))
US_President.name = 'Obama'
print c.name, z.name, US_President.name
Output:
0x7f227776a930 0x7f227776a930 0x7f227776a930
Donald Donald
Trump Donald Donald
0x7f227776a420 0x7f227776a930 0x7f227776a930
Trump Obama Obama
誰かこの動作を説明してください。事前に感謝します
ありがとうございます!ええ、私はこのトリックを逃した:) – Sam1313