我有一个字符串:`
(“Bit”+ 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:'Class2'对象没有属性'Bit1' 这是非常令人沮丧的,因为我可以在错误中看到我用“Bit1”获得我想要的东西,但我不知道为什么它想成为我班级的归属。 没有办法简单地
getattr(self, ("Bit" + str(loopCount) )) = QtGui.QLineEdit(self)
error : SyntaxError: can't assign to function call
我已经阅读过很多次“不要使用getattr us a dictionary”好吧......但为什么呢?使用字典听起来像是为了做这么简单的事情而做了很多工作?
由于
答案 0 :(得分:2)
不是创建单独的编号属性,而是使用列表或字典。在这种情况下,列表就可以了:
self.bits = [QtGui.QLineEdit(self) for _ in range(3)]
创建一个包含3个QLineEdit
个对象的列表。
动态设置属性,您可以使用setattr()
function:
setattr(self, 'Bit{}'.format(loopCount), QtGui.QLineEdit(self))