调用Python实例方法触发AttributeError:对象无对应属性求助
解决AttributeError: 'Script' object has no attribute 'run'问题
看起来你遇到的问题大概率是代码缩进错误导致的——Python对缩进的要求非常严格,类中的方法必须保持一致的缩进层级才能被正确识别为类的成员方法。
你贴出的代码里,run()方法看起来是定义在Script类中的,但如果实际代码里它的缩进没有和__init__、getData1等方法对齐,Python就会把它当成类外部的独立函数,而不是类的方法,这样创建Script实例后自然就找不到run属性了。
修正后的正确代码
class Script(object): def __init__(self, data1, data2, data3): self.data1 = data1 self.data2 = data2 self.data3 = data3 def getData1(self): return self.data1 def getData2(self): return self.data2 def getData3(self): return self.data3 def run(self): return 'Running successfully' script1 = Script('data1', 'data2', 'data3') print(script1.run()) # 注意Python 3里print需要加括号,若使用Python 2可去掉括号
其他排查方向
如果缩进没问题,那可以检查这几点:
- 确认方法名拼写正确:有没有把
run写成ran、ruN这类拼写错误? - 确认运行的是最新版本的代码:有时候编辑完代码没保存就运行,或者不小心运行了旧的脚本文件。
- 检查是否有多个
Script类的定义:如果脚本里后面还有另一个Script类的定义,可能覆盖了前面的版本,导致新的类里没有run方法。
按照上面的步骤排查后,应该就能解决这个问题了。
内容的提问来源于stack exchange,提问作者Shan Ratnam
相关产品推荐
相关产品推荐

