如何向枚举添加方法?

新手上路,请多包涵

我想向我的枚举添加一个方法。

 class Kerneltype(Enum):
    tube = 0
    subspace_KDE = 1
    deltashift = 2
    dist_sens_via_mass_1 = 3

    def aslist(self):
        return [self.tube, self.subspace_KDE, self.deltashift, self.dist_sens_via_mass_1]

    def fromint(self, int):
        return self.aslist()[int]

不起作用。代替

Kerneltype.aslist()

我目前必须做

[kt[1] for kt in ob.Kerneltype.__members__.items()]

原文由 Make42 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 381
1 个回答

您创建了一个实例方法,因此 aslist 仅存在于 Kerneltype 的实例中(即枚举成员本身)。您需要 一个类方法

 @classmethod
def aslist(cls):
    return [cls.tube, cls.subspace_KDE, cls.deltashift, cls.dist_sens_via_mass_1]
 >>> Kerneltype.aslist()
[<Kerneltype.tube: 0>, <Kerneltype.subspace_KDE: 1>, <Kerneltype.deltashift: 2>, <Kerneltype.dist_sens_via_mass_1: 3>]

原文由 poke 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题