擅长:python、mysql、java
<p>事实上你能做到<strong>asdict</strong>具有关键字参数<a href="https://docs.python.org/3.8/library/dataclasses.html#dataclasses.asdict" rel="noreferrer">dict_factory</a>,允许您在此处处理数据:</p>
<pre><code>from dataclasses import dataclass, asdict
from enum import Enum
@dataclass
class Foobar:
name: str
template: "FoobarEnum"
class FoobarEnum(Enum):
FIRST = "foobar"
SECOND = "baz"
def custom_asdict_factory(data):
def convert_value(obj):
if isinstance(obj, Enum):
return obj.value
return obj
return dict((k, convert_value(v)) for k, v in data)
foobar = Foobar(name="John", template=FoobarEnum.FIRST)
print(asdict(foobar, dict_factory=custom_asdict_factory))
# {'name': 'John', 'template': 'foobar'}
</code></pre>