Je veux hériter de l'arrière avec la classe de données python

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

Pas bien

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

Pour être honnête, c'est difficile à lire, mais c'est une solution

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'>

Postscript

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

Je veux hériter de l'arrière avec la classe de données python
Je veux déboguer avec Python
[Python] Je souhaite utiliser l'option -h avec argparse
Je veux jouer avec aws avec python
Je veux connaître la météo avec LINE bot avec Heroku + Python
Je veux sortir le début du mois prochain avec Python
Je veux utiliser MATLAB feval avec python
Je veux faire un jeu avec Python
Je souhaite utiliser le répertoire temporaire avec Python2
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
Je veux écrire dans un fichier avec Python
Je veux afficher la progression en Python!
Je veux gérer l'optimisation avec python et cplex
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Je veux travailler avec un robot en python.
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux AWS Lambda avec Python sur Mac!
J'ai essayé de résoudre le problème avec Python Vol.1
Je veux utiliser le jeu de données R avec python
Je veux faire fonctionner un ordinateur quantique avec Python
J'ai aimé le tweet avec python. ..
Je veux faire ○○ avec les Pandas
J'ai essayé de trouver l'entropie de l'image avec python
Je veux pouvoir analyser des données avec Python (partie 3)
Je veux initialiser si la valeur est vide (python)
J'ai essayé de simuler la propagation de l'infection avec Python
Je souhaite spécifier une autre version de Python avec pyvenv
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux changer le drapeau japonais en drapeau des Palaos avec Numpy
Je veux pouvoir analyser des données avec Python (partie 4)
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
Je veux pouvoir analyser des données avec Python (partie 2)
Je veux assister automatiquement à des cours en ligne avec Python + Selenium!
Je veux connaître la nature de Python et pip
Je veux épingler Spyder à la barre des tâches
Je veux détecter des objets avec OpenCV
Je veux sortir froidement sur la console
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je veux gérer la rime part1
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Je veux écrire un blog avec Jupyter Notebook
Je veux gérer la rime part3
Je veux utiliser jar de python
Je veux créer un environnement Python
Je veux installer Python avec PythonAnywhere
Je souhaite rechercher le texte intégral avec elasticsearch + python
Je voulais résoudre le problème ABC164 A ~ D avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je veux afficher la barre de progression
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Je veux vérifier la position de mon visage avec OpenCV!
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Je voulais résoudre ABC172 avec Python
Je veux gérer la rime part2