我有一个字符串:`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