Python从字典中获取类实例化时出现AttributeError如何解决?
报错原因
你遇到的报错和从字典获取类实例化的逻辑无关,问题出在类内部的属性命名不匹配:
在calibrate.py的FullDirichletCalibrator类__init__方法中,你接收的入参名称为reg_lambda_list,但赋值给实例属性时,使用的名称是self.reg_lambda,因此实例化后的对象仅存在reg_lambda属性,不存在reg_lambda_list属性,访问不存在的属性就会抛出该错误。
解决方案
有两种修复方式,二选一即可:
- 方式一:统一类内部的属性命名和入参一致
修改calibrate.py的代码:
class FullDirichletCalibrator(BaseEstimator, RegressorMixin): def __init__(self, reg_lambda_list=0.0): # 保持属性名和入参名称相同 self.reg_lambda_list = reg_lambda_list
- 方式二:后续访问属性时使用实际存在的属性名
如果你是刻意将实例属性命名为reg_lambda,只要把所有访问reg_lambda_list属性的代码,改为访问reg_lambda即可。
补充说明
你现有代码中「将类存入字典、取出后传参实例化」的逻辑本身是正确的,无需修改,只要确保实例化时传入的reg_list变量已经提前定义即可。
内容的提问来源于stack exchange,提问作者Gooby
相关产品推荐
相关产品推荐

