Python运行Multiplier2类代码报AttributeError: 'str'无problem属性求助
报错原因分析
这个报错的核心原因是错误的类实例化和方法调用方式,导致Calculate方法的self参数被传入了字符串类型的值:
- 第一处错误:
X = Multiplier2写法错误,这是将Multiplier2类本身赋值给变量X,没有创建类的实例,也没有执行__init__方法初始化problem属性。类实例化需要加括号并传入__init__要求的problem参数,正确写法应为X = Multiplier2(待处理的problem字符串)。 - 第二处错误:调用
Calculate方法时错误传入了输入字符串。类的普通方法第一个参数self默认接收实例对象本身,你未实例化就直接调用X.Calculate(input('Enter problem: ')),此时输入的字符串会被直接传给self参数,导致Calculate方法内部的self是字符串类型,访问self.problem自然会触发'str' object has no attribute 'problem'的报错。
你之前的代码可以正常运行,是因为之前正确完成了类的实例化,调用方法时self拿到的是类实例对象,实例已经初始化了对应的_problem属性,所以访问不会报错。
内容的提问来源于stack exchange,提问作者davidvan
相关产品推荐
相关产品推荐

