Ich möchte ein gemeinsames Feld für jede Datenklasse, aber ich möchte einen Standardwert angeben. Wenn ich ihn also normal erbe, wird dieser vor dem Typfehler angehängt. Es ist schwer
from dataclasses import dataclass
@dataclass
class Base:
base: int = 10
@dataclass
class Extend(Base):
extend: int
Tippfehler
Selbst wenn Sie eine Klasse erben, die nicht "@ dataclass" ist, scheint das geerbte Feld nicht geerbt zu werden (an \ _ \ _ init \ _ \ _).
Schreiben Sie einen Dekorateur
from dataclasses import dataclass
def add(c):
@dataclass
class wrap(c):
added: int = 10
return wrap
@add
@dataclass
class DataClass:
field: str
Der Nachteil ist, dass der Interpreter "
>> DataClass
<class '__main__.add.<locals>.wrap'>
Anscheinend ist der Name der Klasse in __qualname__
.
def add(c):
@dataclass
class wrap(c):
added: int = 10
__qualname__ = c.__qualname__
return wrap
>> DataClass
<class '__main__.DataClass'>
Recommended Posts