【发布时间】:2020-08-03 21:42:37
【问题描述】:
我有一个数据类,其字段 template 类型为枚举。使用 asdict 函数时,它将我的数据类转换为字典。是否可以使用FoobarEnum 的value 属性来返回字符串值而不是Enum 对象?
我最初的想法是使用asdict 函数的dict_factory=dict 参数并提供我自己的工厂,但我不知道该怎么做。
from dataclasses import dataclass, asdict
from enum import Enum
@dataclass
class Foobar:
name: str
template: "FoobarEnum"
class FoobarEnum(Enum):
FIRST = "foobar"
SECOND = "baz"
foobar = Foobar(name="John", template=FoobarEnum.FIRST)
print(asdict(foobar))
当前输出:
{'name': 'John', 'template': <FoobarEnum.FIRST: 'foobar'>}
目标:
{'name': 'John', 'template': 'foobar'}
【问题讨论】:
标签: python enums python-dataclasses