【发布时间】:2015-09-29 12:53:41
【问题描述】:
在外部更改后如何更新包含其他 self.variables 的 self.dictionary 或 self.list?
例如,我们有以下测试类:
class Test():
def __init__(self):
self.some_number = 0
self.other_number = 0
self.lst=[self.some_number, self.other_number]
self.dic={'some_number': self.some_number, 'other_number': self.other_number}
def update_values(self):
self.number = 2
self.other_number = 3
然后更新值:
test = Test()
print(test.dic)
print(test.lst)
test.update_values()
print(test.dic)
print(test.lst)
结果没有变化:
{'other_number': 0, 'some_number': 0}
[0, 0]
{'other_number': 0, 'some_number': 0}
[0, 0]
我实际上认为,字典和列表保存了对这些变量的引用,这些变量指向内存中的某个位置。因此,如果这些改变,那也应该改变。但情况似乎并非如此。有什么解释吗?
【问题讨论】:
-
为什么你的类实例复制了相同的值?这似乎是一个坏主意并且容易出错。如果只使用 dict,则可以使用 dict.keys() 或 dict.values() 获取名称或值。如果顺序与列表一样重要,请使用 collections.OrderedDict。
-
无顺序并不重要。这个想法是在一个 dic 中额外收集所有内容,例如以便稍后对其进行漂亮的打印操作。
标签: python arrays oop object dictionary