我不明白,爲什麼下面的代碼在__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