Je veux un champ commun pour chaque classe de données, mais je veux donner une valeur par défaut, donc si j'hérite normalement, cela sera attaché avant l'erreur de type. C'est dur
from dataclasses import dataclass
@dataclass
class Base:
base: int = 10
@dataclass
class Extend(Base):
extend: int
erreur-type
De plus, même si vous héritez d'une classe qui n'est pas @ dataclass
, il semble que le champ hérité ne soit pas hérité (vers \ _ \ _ init \ _ \ _).
Ecrire un décorateur
from dataclasses import dataclass
def add(c):
@dataclass
class wrap(c):
added: int = 10
return wrap
@add
@dataclass
class DataClass:
field: str
L'inconvénient est que l'interpréteur est <locals> .wrap
au lieu du nom.
>> DataClass
<class '__main__.add.<locals>.wrap'>
Apparemment, le nom de la classe est dans «qualname».
def add(c):
@dataclass
class wrap(c):
added: int = 10
__qualname__ = c.__qualname__
return wrap
>> DataClass
<class '__main__.DataClass'>
Recommended Posts