首页 > 解决方案 > 不同项目中的python通用枚举

问题描述

我的设置有一个在 pc1 上运行的管理器进程和一个在 pc2 上运行的进程。他们通过 rpyc 进行通信。Pc2 连接了 3 个摄像头(它是一个机器人)。

我在两个进程中使用了相同的类定义来定义我的相机:

class CameraList(Enum):
    EYE = 0
    CART = 1
    HEAD = 2

我在两台机器上都使用枚举值来创建一个包含更多相机定义的字典

config.cameras.update({config.CameraList.EYE: { <eye cam parameters> }})
config.cameras.update({config.CameraList.CART: { <cart cam parameters> }})

在管理器进程中,我想在我的 rpyc 调用的参数中请求将相机指定为 config.CameraList.EYE 的图像。

在尝试使用参数访问凸轮的执行过程(Pc2)中,我得到一个关键错误。

我只能使用“config.CameraList.EYE.value”或“config.CameraList.EYE.name”作为参数来完成这项工作,因为枚举是在不同的进程中创建的吗?

标签: pythonenumsshare

解决方案


这里最简单的解决方案是使用IntEnum-- IntEnums 只是花哨int的 s,并作为ints 传输,所以在机器人方面你会得到比较:

cameraList.EYE == 0

这将评估为True


推荐阅读