Open
Description
dataclass in python 3.10 and above got KW_ONLY sentinel value
it allows you to mark where the constructor will start the KWARGS in the class
https://docs.python.org/3/library/dataclasses.html#dataclasses.KW_ONLY
i did not found a way to do this in attrs package
@dataclass()
class Foo():
x:str=field(default="a")
_:KW_ONLY
y:bool
the function signature of the init will be
(x: str = "a", *, y: bool) -> None
the dataclass one will re order the items order in the constructor and handle inheritance properly(if needed)
https://docs.python.org/3/library/dataclasses.html#re-ordering-of-keyword-only-parameters-in-init
from dataclasses import dataclass,KW_ONLY,field
@dataclass
class Base:
x: float = 15.0
_: KW_ONLY
y: int = 0
w: int = 1
@dataclass
class D(Base):
z: int = 10
_: KW_ONLY
t: int = field(kw_only=False, default=0)
function signature:
(x: float = 15, z: int = 10, t: int = 0, *, y: int = 0, w: int = 1) -> None