【发布时间】:2020-07-23 18:44:46
【问题描述】:
dataclasses.astuple 是递归的(根据documentation):
每个数据类都转换为其字段值的元组。数据类、字典、列表和元组被递归到。
确实,考虑示例:
In [1]: from dataclasses import dataclass, astuple
...: from typing import List
...:
...: @dataclass
...: class Point:
...: x: float
...: y: float
...:
...: @dataclass
...: class Side:
...: left: Point
...: right: Point
...:
...: side = Side(Point(2, 3), Point(1, 2))
...: astuple(side)
...:
...:
Out[1]: ((2, 3), (1, 2))
是否有任何简单的内置方法来获取点的二元组,即(Point(x=2, y=3), Point(x=1, y=2))?
【问题讨论】:
-
@MisterMiyagi 好吧,我试着查看文档和谷歌搜索:) 并不是说我无法以某种方式解决这个问题(即像你提出的解决方案或编写我自己的函数),但我曾经相信应该有某种规范的方式来做到这一点,因为在我看来这个用例似乎很自然。