我有一個字符串:`Python 3 getattr字符串來命名它爲什麼不好?
( 「位」 + STR(loopCount)))`
loopcount只是一個數字,我在一個循環遞增。
我想那是創建一些qtwidget這樣做的:
self.Bit1 = QtGui.QLineEdit(self)
self.Bit2 = QtGui.QLineEdit(self)
self.Bit3 = QtGui.QLineEdit(self)
...等多達我在LoopCount。
爲此,我需要將我的字符串轉換爲名稱。通過在網上查找,我發現了這個getattr,這似乎是最容易的方法: BitNmb在範圍內(0,self.mySpnValue): getattr(self,(「Bit」+ str(loopCount)))
這給我這個錯誤: AttributeError的:「等級2」對象有沒有屬性「位1」 這是相當令人沮喪,因爲我可以在我得到錯誤看到了我想要的「第1位」,但我沒有一個線索爲什麼它想成爲我班的一個屬性。 沒辦法做簡單
getattr(self, ("Bit" + str(loopCount))) = QtGui.QLineEdit(self)
error : SyntaxError: can't assign to function call
我看了很多時候「不GETATTR我們使用字典」 OK ......但是爲什麼呢?使用字典聽起來像很多工作只是爲了做這麼簡單的事情?
謝謝
'setattr'做你想要做的事。但實際上,只是使用一個列表:'self.bits = [QtGui.QLineEdit(self)for _ in range(loop_count)]' – roippi 2014-09-06 18:11:17
我剛剛明白了爲什麼我得到這個錯誤,這是因爲「self」... arg 。 感謝列表的例子,但我真的不明白它,我不是特別新的編碼,但self.bits = [QtGui.QLineEdit(self)for _ in range(loop_count)]不會讓很多sens對我來說。如果我正在做這樣的事情,我會發現自己有幾個相同的self.bits,這似乎不可能。 (?) – 2014-09-06 18:15:43