我有一个问题,我正在寻找一个Python的方式来解决它。我想这样做:
def ConvertData(self):
for dataSet in [self.trainData, self.testData]:
convertedDataSet = ... do_something(dataSet) ...
dataSet = convertedDataSet
因此,我想以相同的方式转换所有类属性,而不必为每个属性复制代码。但我的做法行不通。在上面的for循环中,在最后,dataSet
被正确地转换。但这自然不会被分配给self.trainData
正确的编程方法是什么
convertedDataSet = ... do_something(self.trainData) ...
self.trainData = convertedDataSet
convertedDataSet = ... do_something(self.testData) ...
self.testData = convertedDataSet
非常感谢!:)
编辑:我找到了一个带有getattr
和setattr
的解决方案:
def ConvertData(self):
for attr in ["trainData", "testData"]:
convertedDataSet = ... do_something(getattr(self, attr)) ...
setattr(self, attr, convertedDataSet)
但我还是不喜欢。这是最好的方法还是有更好的解决方案
你的问题与
attr
无关,只与list
有关。例如:显然,在循环之后,
numbers
仍然是[1, 2, 3]
要更改列表的元素,需要使用
enumerate
:相关问题 更多 >
编程相关推荐