获取AttributeError:<class>没有属性<method>

use*_*309 11 python attributeerror

我在模块mod1中的类中创建一个方法,并按如下方式调用它:

class blahblah:
   def foobar(self, bvar, **dvar)
       ////
       return dvar
Run Code Online (Sandbox Code Playgroud)

并将其称为:

obj1 = mod1.blahblah()
dvar1 = obj1.foobar(True, **somedictionary)
Run Code Online (Sandbox Code Playgroud)

它扔了一个 Attribute error: blahblah has no attribute named foobar

你能帮帮我吗?提前致谢

小智 26

您描述的错误类型可能仅由不匹配的缩进引起.如果方法位于类的最底层,请稍微在类中向上移动,问题就会变得明显.

当python解释器遇到不匹配的缩进(比如说你开始在使用空格缩进的文件底部使用制表符)时,解释器不会总是抛出错误; 它可以简单地忽略文件的其余部分.我刚刚在更新一些原始作者使用不同的空白字符(碰巧与我的Geany标签匹配)的旧代码时遇到了这个问题,并且它让我的循环时间比我想承认的要长很多.:)

  • 对于它的价值,在jupyter笔记本中使用%autoreload magic命令时,当您修改模块代码中的某些方法时,也会发生这种情况(https://ipython.org/ipython-doc/3/config/extensions/autoreload. HTML#告诫) (5认同)

小智 6

当我遇到这个问题时,我立即开始检查不平衡的缩进、制表符等...一切似乎都是正确的,但错误仍然出现。我走开,回来,再看一眼,呃......,我发现我有一个错字。相反__init__(),我输入了__inti__()。因此,首先检查所有构造函数的语法。