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

Python3: auto-generation of variable names for object children

对于具有不同冷却区(最多 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)

并添加 'cooling zones' 如:

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

干杯, 克里斯蒂安

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

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

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