我不明白,为什么下面的代码在__str__
方法返回一个错误AttributeError: 'Dice' object has no attribute 'die1'
。我知道我已经创建了一个,我的调试器将它显示为一个类属性。这个(简单)代码有什么问题?类属性没有显示出来,如预期
class Dice(QMainWindow) :
"""A game of Dice."""
def __init__(self, parent = None):
"""Build a game with two dice."""
QMainWindow.__init__(self, parent)
super(Dice, self).__init__(parent)
uic.loadUi("Dice.ui", self)
self.die1 = Die()
self.die2 = Die()
self.rollButton.clicked.connect(self.rollButtonClickedHandler)
def __str__(self):
"""String representation for Dice.
"""
return "Die1: %s\nDie2: %s" % (str(self.die1), str(self.die2))
什么明显错了是你'__init__'基类两次(一次明确地与'super'一次 - 失去一个他们!),但这并不能解释你观察到的错误。 – 2015-03-25 04:03:46
由于'loadUi'在您的类实例(您将它传递给'self')的'die1'设置之前调用'__str__',所以会引发错误。 – ekhumoro 2015-03-25 05:54:23
感谢您指出了双重构造函数的调用,我注意到一个人,睡了一晚后!然而ekhumoro钉住了这个问题!谢谢!谨慎进一步评论?我正在从PyQt4切换到PyQt5,并且始终在我的代码之外编译ui。我想在设置信号之前我需要加载ui,这是真的吗?另外为什么loadUi会在我的类中调用str方法? – Arana 2015-03-25 15:11:44