通过提供的变量调用对象实例

Object instance evocation by provided variable

假设有一组对象,例如:

class oven():
    pass
class delta_t_pause():
    pass
class caliberBox():
    pass
class caliberRectl():
    pass
class caliberRound():
    pass

等等。有一个 class Button(QtWidgets.QPushButton) ,它在通过鼠标单击调用时接收两个变量。在变量上携带一个id,其他数据要存储在对象中。

我想做的是,创建一个匹配id的对象实例。给它分配数据可能是通过 obj = Object(data) 完成的,这没什么大不了的。

有没有人对如何实现这一点有一些有用的想法?我有点卡在这里了。

class Button(QtWidgets.QPushButton):
    def __init__(self, senderid, items, parent):
        super().__init__(senderid, items, parent)
        print(senderid)
        self.obj = items

    def mousePressEvent(self,event):
        QtWidgets.QPushButton.mousePressEvent(self, event)
        if event.button() == QtCore.Qt.LeftButton:
            print(event.button(),' pressed')

是我目前所拥有的...

有点像 如果 senderid 在列表中: obj = 对象(数据) 但是我如何 select 正确的对象

所有编程都是在Python-3.4和PyQt5.5中完成的。

干杯, 克里斯蒂安

您可以保留一个将 ID 映射到 类 的字典。然后你可以使用字典来创建你的对象。

objects = {4: oven, 8: delta_t_pause, 15: caliberBox}
if senderid in objects:
    obj = objects[senderid](data)