主要观点:Python 的 dataclasses
是构建主要用于存储或处理数据的类的很好的特性,可替代字典和手动构建类,且有 kw_only=True
等特点。
关键信息:
dataclasses
可添加方法、动态属性和子类,无需自定义__init__()
并自带__eq__()
方法。- 使用
kw_only=True
构建__init__()
,如@dataclass(kw_only=True)
,参数列表中的*
表示后续参数必须以关键字参数形式传递。 - 这样做的原因:可重排序字段而不影响调用者,允许子类添加必需字段;对库作者很重要,可确保向后兼容性和向前扩展性。
重要细节: - 不使用
kw_only=True
时,调用者可使用位置参数如MyDataClass(1, 'foo', False)
,重排或删除参数会意外破坏调用者。 - 此特性在 Python 3.10 中引入,若支持旧版本则不能使用,可通过判断版本来决定是否使用,如
if sys.version_info[:2] >= (3, 10)
,但这样不能解决子类化问题,若要支持 3.10 之前版本,子类仍需使用默认参数。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。