抱歉,如果这是一个愚蠢的问题,我正在努力想另一个简单的方法来解决它。你知道吗
我的代码(相关位):
import file2
sliderData = [{'name': 'Number of mountains', 'variable': file2.NUMMOUNTAINS},
{'name': 'Number of trees', 'variable': file2.NUMTREES}
for i in range(len(self.sliders)): # self.sliders is a list of Slider() objects
self.sliderData[i]['variable'] = self.sliders[i].update() # update() returns an int
print int(file2.NUMMOUNTAINS)
我无法确定如何使它更新存储在sliderData[i]['variable']
中的变量(即更改file2.NUMMOUNTAINS
本身)。它似乎只是改变了字典中存储的值。你知道吗
有什么想法吗?你知道吗
似乎
file2.NUMMOUNTAINS
是int
,所以在字典中,您可以从file2.NUMMOUNTAINS
获得值的副本-而不是引用变量file2.NUMMOUNTAINS
self.sliderData[i]['variable']
和file2.NUMMOUNTAINS
是独立变量。你知道吗当你改变
self.sliderData[i]['variable']
它不会改变file2.NUMMOUNTAINS
。当您更改
file2.NUMMOUNTAINS
时,它不会更改self.sliderData[i]['variable']
。你知道吗您应该向file2添加某种方法来进行更新,因为您在该代码中所做的是更改字典中的值(键“variable”)。你知道吗
例如,可以在file2中有一个方法,该方法接收键名和值,然后更改要更改的实际值
然后在实际代码中:
不管怎么说,这是一个糟糕的结构,如果你需要扩展它(比如在字典中有更多的元素),它将很难和容易出错。你知道吗
假设
file2.NUMMOUNTAINS
是int
或float
,请注意这两种类型都是不可变的,即不能就地更改。你知道吗因此,当您将
self.sliders[i].update()
返回的值赋给self.sliderData[i]['variable']
时,这不会改变file2.NUMMOUNTAIN
,而是将字典引用赋给另一个对象。你知道吗下面是一个简单的例子:
您必须显式地更改属性的值,例如
相关问题 更多 >
编程相关推荐