Ala*_*ack 7 python mixins python-3.x python-dataclasses
我正在尝试创建一个由继承的数据类组成的 Python 3.7 数据类:
from dataclasses import dataclass
@dataclass
class A:
title: str
synopsis: str = "A book"
@dataclass
class B:
id: str
description: str = "A short book about something"
@dataclass()
class C(A, B):
provider: str
c = C(title="Trainspotting")
Run Code Online (Sandbox Code Playgroud)
这将引发以下异常:
Traceback (most recent call last):
File "tests/test.py", line 14, in <module>
class C(A, B):
File "lib/python3.7/dataclasses.py", line 958, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen)
File "lib/python3.7/dataclasses.py", line 879, in _process_class
else 'self',
File "lib/python3.7/dataclasses.py", line 466, in _init_fn
raise TypeError(f'non-default argument {f.name!r} '
TypeError: non-default argument 'title' follows default argument
Run Code Online (Sandbox Code Playgroud)
@dataclass
当它通过 MRO 反转时,Python 的分辨率似乎并没有对齐所有父级的默认和非默认选项。有没有解决的办法?
编辑:我现在使用 Pydantic 库,它提供更多控制以及附加功能,例如 JSON 序列化和反序列化。
归档时间: |
|
查看次数: |
1365 次 |
最近记录: |