【发布时间】:2021-03-18 00:47:42
【问题描述】:
我有一个枚举和一个数据类,如下所示。
class Mode(Enum):
MODE_A = auto()
MODE_B = auto()
@dataclass
class BaseDataClass:
a: int
b: int
c: int
mode: Mode
def to_dict(self):
return vars(self)
to_dict 函数显示
b = BaseDataClass(a=1, b=2, c=3, mode=Mode.MODE_A)
b.to_dict()
> {'a': 1, 'b': 2, 'c': 3, 'mode': <Mode.MODE_A: 1>}
我想将模式名称输出为它的值,例如'mode': 'MODE_A'。我尝试在枚举类中使用诸如__str__ 和__repr__ 之类的dunder 方法,但它不起作用。因为它不应该编辑__dict__ 值,有没有人提出一个实现这一目标的好方法?
【问题讨论】:
-
如果你只做
print(Mode.MODE_A),它是否能如你所愿? -
@Barmar 是的,通过打印,它显示如下
>>> print(Mode.MODE_A)然后Mode.BUDGET -
如果您担心它在命令行解释器中的打印方式,那么您什么都不必担心。对于您的用户,您将进行格式化,它看起来是正确的。
-
我想要的是一种通过
to_dict函数输出具有{'mode': 'MODE_A'}而不是{'mode': <Mode.MODE_A: 1>}的dict的方法。
标签: python python-3.x class enums