Python:AttributeError
我遇到了一个我似乎无法解决的归因错误。 我在两个班工作 第一节课是这样的Python:AttributeError,python,tkinter,attributeerror,Python,Tkinter,Attributeerror,我遇到了一个我似乎无法解决的归因错误。 我在两个班工作 第一节课是这样的 class Partie: def __init__(self): # deleted lines self.interface = Interface(jeu=self) def evaluerProposition(self): # computations self.interface.afficherReponse() 介绍第二类(
class Partie:
def __init__(self):
# deleted lines
self.interface = Interface(jeu=self)
def evaluerProposition(self):
# computations
self.interface.afficherReponse()
介绍第二类(在单独的文件中)
我是从一开始
partie = Partie()
我的小部件上的所有操作都可以正常工作,直到某个单击事件导致
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1442, in __call__
return self.func(*args)
File "C:\Users\Canard\Documents\My Dropbox\Python\AtelierPython\Mastermind\classeInterface.py", line 197, in clic
self.jeu.evaluerProposition()
File "C:\Users\Canard\Documents\My Dropbox\Python\AtelierPython\Mastermind\classeJeu.py", line 55, in evaluerProposition
self.interface.afficherReponse()
AttributeError: 'Partie' object has no attribute 'interface'
我输入了翻译程序
>>> dir(partie)
并得到一个长长的列表,其中包含属性中的“接口”
也打字
>>> partie.interface
<classeInterface.Interface object at 0x02C39E50>
>partie.interface
因此,该属性似乎存在
按照前一篇文章中的建议,我检查了实例名称与模块名称是否不一致。
我很困惑。最有可能的是,在一些您没有向我们展示的代码中,您正在执行以下操作:
self.some_button = tkinter.Button(..., command=self.interface.onClick())
注意
onClick()
上的尾随()
。这将导致在创建按钮时调用onClick
方法,这可能是在构造函数构造Partie
类的实例之前,但我认为,您在Partie
的构造函数中传递self
作为Interface()
的参数的事实是不健康的…@kren470我认为Python并不关心您定义类的顺序。@2rs2它看起来确实不健康。我创建了第三个类Master
,它有两个属性interface
和partie
。然后,我可以通过self.partie.interface=self.interface-self.interface.partie=self.partie链接这两个对象。在哪里使用onClick
方法?你能展示一下代码吗?我的猜测是,您正在执行类似于按钮(…,command=self.onClick())
(注意函数名后面的()
)。如果是,您需要删除()
(例如:按钮(…,command=self.onClick
)。此代码中没有明显的错误。但是您应该发布函数接口的代码。afficherResponse
,因为这是导致错误的原因。
self.some_button = tkinter.Button(..., command=self.interface.onClick())