递归声明变量 - python

时间:2013-12-17 07:57:42

标签: python python-2.7 recursion

通常我永远不会想要这样做,但在这种情况下,我觉得似乎别无选择。我正在pyqt中构建一个程序,它有许多标签小部件,除了几何上的几个位置外,其中很多都是相同的。

我想自动声明它们,而不是逐行声明它们占用了很多行。它看起来也很难看。

有没有办法说创建十个变量,如var1,var2,var3等,而不必逐行声明它们?

现在我的代码看起来像 -

self.folderheader1 = QtGui.QLabel(self.folders)
self.folderheader2 = QtGui.QLabel(self.folders)
self.folderheader3 = QtGui.QLabel(self.folders)
self.folderheader4 = QtGui.QLabel(self.folders)
...

2 个答案:

答案 0 :(得分:8)

可以使用setattr执行此操作,但我不推荐

for i in range(1,5):
    setattr(self, 'folderheader%s' % i, QtGui.QLabel(self.folders))

相反,我可以建议list吗?

self.folderheaders = [QtGui.Qlabel(self.folders) for _ in range(1, 5)]

现在取代self.folderheaders1而不是self.folderheaders[0],这并不是真的那么不同......

答案 1 :(得分:1)

您可以使用dict这样的

self.foldersdict = {}
for i in range(100):
    self.foldersdict[i] = QtGui.QLabel(self.folders)

您可以稍后像这样访问它们,

self.foldersdict[1]