Ich möchte mit Python-Datenklasse nach hinten erben

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

Nicht gut

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 \ _ \ _).

Um ehrlich zu sein, ist es schwer zu lesen, aber es ist eine Lösung

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 " .wrap" anstelle des Namens ist.

>> DataClass
<class '__main__.add.<locals>.wrap'>

Nachtrag

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

Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit Python debuggen
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte mit aws mit Python spielen
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Ich möchte MATLAB feval mit Python verwenden
Ich möchte ein Spiel mit Python machen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
Ich möchte mit Python in eine Datei schreiben
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte Lambda mit Python auf Mac AWS!
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte R-Datensatz mit Python verwenden
Ich möchte einen Quantencomputer mit Python betreiben
Ich mochte den Tweet mit Python. ..
Ich möchte ○○ mit Pandas machen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich möchte eine andere Version von Python mit pyvenv angeben
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte Daten mit Python analysieren können (Teil 4)
Was ich getan habe, um die Python2 EOL mit Zuversicht zu begrüßen
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich möchte automatisch an Online-Kursen mit Python + Selen teilnehmen!
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte Objekte mit OpenCV erkennen
Ich möchte kühl auf die Konsole ausgeben
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte mit dem Reim part3 umgehen
Ich möchte ein Glas aus Python verwenden
Ich möchte eine Python-Umgebung erstellen
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte den Fortschrittsbalken anzeigen
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich wollte ABC172 mit Python lösen
Ich möchte mit dem Reim part2 umgehen