3

うまくいかないように見える AttributeError が発生します。私は2つのクラスで働いています。

ファーストクラスはこんな感じです。

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)

そして、属性の中に「インターフェース」を含む長いリストを返しました。

また、入力

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

したがって、属性が存在するようです。

以前の投稿のアドバイスに従って、インスタンス名がモジュール名と一致しないことを確認しました。私は混乱しています。

4

1 に答える 1

0

ほとんどの場合、表示されていないコードでは、次のようなことを行っています。

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

の末尾()に注意してくださいonClick()。これにより、ボタンが作成されたときにonClickメソッドが呼び出されます。これはおそらく、コンストラクターがクラスのインスタンスの構築を完了する前です。Partie

于 2013-07-13T10:50:30.257 に答える