python - 如何向枚举添加方法?

标签 python enums

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

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()]

最佳答案

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

@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>]

关于python - 如何向枚举添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44140148/

相关文章:

C# - 通过 web 服务公开枚举类型

c++ - C++ 中空枚举的大小如何为 4?

c++ - 我应该使用#define、枚举还是常量?

python - 使用 easygui 和 pygame 将 .py 制作成独立的可执行文件?

python - 如何使用 python/listing docker images 获取 GCR 访问 token

python - 使用 Azure 容器注册表 python API 列出图像标签

c++ - 只允许枚举的子集作为返回值 - 或如何让编译器提醒我?在 C++ 中

python - 属性错误: '_io.TextIOWrapper' object has no attribute 'nameofColumn' datatable

Python C API 在不构建元组的情况下返回多个值/对象

c# - 如何在 xsd 中使用枚举