如何向枚举添加方法?

新手上路,请多包涵

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

 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 许可协议

阅读 384
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 许可协议

推荐问题