我在带有 Python2.7 的 Classic 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}