如何在外部更改后更新包含其他 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]
我实际上认为,字典和列表包含对这些指向内存中某处的变量的引用。因此,如果这些发生变化,那也应该发生变化。但事实似乎并非如此。有什么解释吗?
最佳答案
如果您想在使用 self.lst
或 self.dic
时获得更新的值,请将它们设为 property
:
class Test():
def __init__(self):
self.some_number = 0
self.other_number = 0
def update_values(self):
self.some_number = 2
self.other_number = 3
@property
def lst(self):
return [self.some_number, self.other_number]
@property
def dic(self):
return {'some_number': self.some_number,
'other_number': self.other_number}
>>> t = Test()
>>> t.lst
[0, 0]
>>> t.dic
{'some_number': 0, 'other_number': 0}
>>> t.update_values()
>>> t.lst
[2, 3]
>>> t.dic
{'some_number': 2, 'other_number': 3}
关于python - 当变量在别处发生变化时如何更新类的列表或字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844560/