首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python : AttributeError

Python : AttributeError
EN

Stack Overflow用户
提问于 2013-07-04 07:16:48
回答 1查看 521关注 0票数 3

我得到了一个我似乎不能解决的AttributeError。我正在和两个类一起工作。

第一个类是这样的。

代码语言:javascript
复制
class Partie:
    def __init__(self):
        # deleted lines
        self.interface = Interface(jeu=self)

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

引入第二个类(在一个单独的文件中)。

代码语言:javascript
复制
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

我是这样开始整个事情的

代码语言:javascript
复制
partie = Partie()

我的小部件上的所有操作都工作正常,直到一些单击事件导致

代码语言:javascript
复制
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'

我输入了口译员。

代码语言:javascript
复制
>>> dir(partie)

并得到一个很长的列表,其中包含属性中的“interface”。

还键入了

代码语言:javascript
复制
>>> partie.interface
<classeInterface.Interface object at 0x02C39E50>

因此,该属性似乎是存在的。

按照上一篇文章中的建议,我检查了实例名称与模块名称不一致。我很困惑。

EN

回答 1

Stack Overflow用户

发布于 2013-07-13 18:50:30

最有可能的是,在您没有向我们展示的一些代码中,您正在做这样的事情:

代码语言:javascript
复制
self.some_button = tkinter.Button(..., command=self.interface.onClick())

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17459618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档