gpt4 book ai didi

python - 动态创建的Enum的方法重载

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:13 42 4
gpt4 key购买 nike

目标是使用动态创建的属性重载 Enum__str__(self) 方法。

动态枚举可以用

创建

[1]:

from enum import Enum, auto

A = Enum('A',
dict(('a_'+some_input, auto())
for some_input in ['1','2','3']),
module=__name__)

方法重载可以用

[2]:

class A(Enum):
a_no_input = auto()

def __str__(self):
return str(self.name)

分别地,这两个示例都按需要工作。结合我试过的两者:

[1]: ...
A.__class__.__str__ = lambda self: str(self.name)

但这不会改变 print(A.a_1) 的输出。

class A(Enum):
def __init__(self):
super('A',
dict(('a_' + some_input, auto())
for some_input in ['1', '2', '3']),
module=__name__)

def __str__(self):
return str(self.name)

但这不会创建可通过 A.a_1 访问的静态属性。

如何动态创建枚举的静态属性并重载父类(super class) Enum 的方法?

最佳答案

您的第三个代码片段应该是:

A.__str__ = lambda self: str(self.name)

注意我把 __class__ 拿出来了。

关于python - 动态创建的Enum的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817353/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com