Python2.7でクラシックEclipse 4.2.2でpydevを使用しています。読みながら、以下のコードと結果を考慮してください。
定義済みの値の変数を持つオブジェクトを作成するとします。ここで、この値を変更して、同じ名前の新しいオブジェクトを作成するとします (つまり、古い名前は新しいオブジェクトを指します)。古い名前は、値がクラス定義で指定された定義済みの値と変わらない新しいオブジェクトを指していると思います。そうではありません。理由についての提案はありますか?
コード:
class example(object):
veryImportantDict = {'A': 0}
def __init__(self):
pass
def set_veryImportantNumber(self,key,val):
self.veryImportantDict[key] = val
if __name__ == '__main__':
test = example()
print "New object: ", test
print "New object's dict: ",test.veryImportantDict
test.set_veryImportantNumber('A',5)
print "Old object's dict: ",test.veryImportantDict
test = example()
print "New object: ", test
print "New object's dict: ",test.veryImportantDict
どちらが返されますか:
New object: <__main__.example object at 0x0478C430>
New object's dict: {'A': 0} Old object's dict: {'A': 5}
New object: <__main__.example object at 0x0478C450>
New object's dict: {'A': 5}