У меня есть проблема, и я ищу питонский способ ее решения. Я хочу сделать что-то подобное:
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)
Но мне все еще не нравится это. Это лучший способ сделать это или есть лучшие решения?