提示:在 Python 数据类中使用仅限关键字的参数

主要观点: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 之前版本,子类仍需使用默认参数。
阅读 9
0 条评论