Python3:为对象子项自动生成变量名

时间:2015-07-09 12:50:50

标签: python-3.4

对于具有不同冷却区域(最多10个)的冷床表示,我构建了以下结构:

class coolingbed:
    def __init__(self, parent):
        self._value = value
        self._coolingzone = []

    def __repr__(self):
        return 'coolingbed({!r})'.format(self._value)

    def add_coolingZone(self, zone):
        self._coolingzone.append(zone)

    def __iter__(self):
        return iter(self._coolingzone)

手动我可以通过以下方式创建一个凉床:

cb = coolingbed(0)

并添加'冷却区',如:

cz1 = coolingbed(1)
cz2 = coolingbed(2)

将添加:

cb.add_coolingZone(cz1)
cb.add_coolingZone(cz2)

并通过以下方式验证:

for cz in cb:
    print(cz)

一开始就没问题,但由于这个冷床代表可以选择指定多少冷却区,并为每个区分配4个值,我正在寻找更自动化的解决方案。 在pyqt5 gui中,最多有10组4个旋转盒来收集数据。每个旋转框都有它的变量名称来响应。 因此,我们的想法是以适当的方式为冷却区域生成这样的变量名称,具体取决于启用了多少区域。

有没有人有想法可以实现这一目标?像'cz'+ i

这样的东西

欢呼声, 基督教

1 个答案:

答案 0 :(得分:0)

你可以使用dictionarys。您使用字典键作为变量名称,将值用作coolingbed对象。

cbeds = {}
for i in range(5):
    key = 'cz' + str(i + 1)
    cbeds[key] = coolingbed(i + 1)

可以使用相应的键索引字典来检索任何单个coolingbed对象。您可以使用cbeds['cz4'],就像它是变量名一样。