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())