【发布时间】:2021-11-29 10:11:02
【问题描述】:
我有很多使用post_init嵌套的数据类
from dataclasses import dataclass
from typing import List
from typing import Optional
from typing import Union
@dataclass
class MyClass:
signed_key: str
signature: str
@dataclass
class Message:
signature: str
my_class: Union[MyClass, dict]
protocol_version: str
signed_message: str
def __post_init__(self):
self.my_class = MyClass(**self.my_class)
它工作得很好,但问题是如果我想像这样将 Message 转换为 dict:
#create a message object before
print(message.__dict__)
我得到的输出:
{'signature': 'test', 'my_class': Myclass(signed_key='test', signature='test'), 'protocol_version': 'test', 'signed_message': 'test'}
我想要什么(嵌套字典):
{'signature': 'test', 'my_class': {'signed_key': 'test', 'signature': 'test'}, 'protocol_version': 'test', 'signed_message': 'test'}
我可以使用 attrs 或 pydantic 之类的库,但这里的目标是只使用纯 python
【问题讨论】:
-
你试过
asdict(message)吗? -
@Abdul 谢谢你,其实超级简单!