Python:AttributeError

时间:2013-07-03 23:16:48

标签: python tkinter attributeerror

我得到一个AttributeError我似乎无法解决。 我正在和两个班级一起工作。

第一堂课就是这样的。

class Partie:
    def __init__(self):
        # deleted lines
        self.interface = Interface(jeu=self)

    def evaluerProposition(self):
        # computations
        self.interface.afficherReponse()

介绍第二类(在单独的文件中)。

class Interface:
    def __init__(self, jeu):
        self.jeu = jeu
        self.root = tkinter.Tk()
        # stuff

    def onClick(self, event):
        # talk
        self.jeu.evaluerProposition()

    def afficherReponse(self):
        # stuff

我通过

开始整个事情
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)

并在属性中使用'interface'获得了一个长列表。

还输入

>>> partie.interface
<classeInterface.Interface object at 0x02C39E50>

因此该属性似乎存在。

根据以前的帖子中的建议,我检查了实例名称与模块名称不一致。 我很困惑。

1 个答案:

答案 0 :(得分:0)

最有可能的是,在某些您没有向我们展示的代码中,您正在执行以下操作:

self.some_button = tkinter.Button(..., command=self.interface.onClick())

请注意()上的结尾onClick()。这将导致onClick方法在创建按钮时调用 ,这可能是在构造函数构建Partie类的实例之前。