python - 添加到列表后的类属性超出范围
问题描述
我正在构建一个通过迭代超参数和检查分数来优化 SKLearn 的 GBoost 分类器的类。我的类具有与分类器使用的每个参数相关的属性,所有参数都在self.__init__
. 更改参数的方法将它们存储在列表中,然后像这样循环列表:
param_list = [self.param1, self.param2]
for param in param_list:
param += 1 #adjust param and check score
不幸的是,将属性添加到列表中会使它们超出范围,或者由于其他原因,它们没有被更新。
解决方案
感谢 chepner 和 ekhumoro 的完美解决方案:
param_list = ['param1', 'param2']
for param in param_list:
setattr(self, param, getattr(self, param) + 1)
通过使用 setattr,类属性是变化而不是局部变量。
推荐阅读
- java - Java 中“if then else”语句的 hashmap 替代方案
- php - 合并计数主题,评论和最后评论日期论坛sql
- javascript - 使用 Hooks 更新 React Js 中的 JSX 内容
- linux-kernel - 对 Linux 内核使用 perf
- python - 为什么我的子弹不动,即使我的坦克
- templates - template_file 中的循环或选择运算符
- javascript - 避免元素在 React 表单中的浏览器调整大小时单独移动
- uicollectionview - 堆栈视图内部 UiscrollView 内容显示大于模拟器中的设备屏幕尺寸
- php - TextArea 作为一个字符串加入 PHP 如何在分隔符的帮助下将其他字符串设置为新行
- scala - Spark 可重复/确定性结果