首页 > 解决方案 > 添加到列表后的类属性超出范围

问题描述

我正在构建一个通过迭代超参数和检查分数来优化 SKLearn 的 GBoost 分类器的类。我的类具有与分类器使用的每个参数相关的属性,所有参数都在self.__init__. 更改参数的方法将它们存储在列表中,然后像这样循环列表:

param_list = [self.param1, self.param2]
for param in param_list:
    param += 1 #adjust param and check score

不幸的是,将属性添加到列表中会使它们超出范围,或者由于其他原因,它们没有被更新。

标签: pythonoopscope

解决方案


感谢 chepner 和 ekhumoro 的完美解决方案:

param_list = ['param1', 'param2']
for param in param_list:
    setattr(self, param, getattr(self, param) + 1)

通过使用 setattr,类属性是变化而不是局部变量。


推荐阅读