我想向我的枚举中添加一个方法。
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/