Héritage avec les dataclasses
Salut Foued !
Ça fonctionne de la même façon qu'avec les classes "normales" :)
Par exemple :
from dataclasses import dataclass
@dataclass
class Animal:
name: str
age: int
@dataclass
class Dog(Animal):
breed: str
# Création d'une instance de Dog
dog = Dog(name="Patrick", age=5, breed="Chihuahua")
print(dog)
Dans cet exemple :
-
Animalest une dataclass parent avec deux attributsnameetage. -
Doghérite deAnimalet ajoute un attribut spécifiquebreed.
Quand tu crées une instance de Dog, tu peux lui passer tous les attributs de l'Animal parent (name et age), ainsi que les attributs spécifiques de Dog (breed).
Si tu as des méthodes spécifiques à ajouter à tes classes, tu peux aussi les définir comme dans une classe normale. Par exemple :
from dataclasses import dataclass
@dataclass
class Animal:
name: str
age: int
def speak(self):
return "I am an animal!"
@dataclass
class Dog(Animal):
breed: str
def speak(self):
return "Woof woof !"
dog = Dog(name="Rex", age=5, breed="Golden Retriever")
print(dog.speak())
Comme tu peux le voir donc c'est similaire que ce qu'on retrouve dans l'orienté objet en général :)
Bonne continuation !
Concernant, l'héritage, on peut préciser que la classe fille hérite de tout sauf de la méthode d'initialisation.
Parce que pour moi, avec l'héritage plus besoin d'initialiser la classe fille. Mais si on a besoin de le faire soit pour definir l'espace de nommage de la classe fille alors, on n'herite pas de tout vraiment.
Salut
Le terme "dataclass" désigne l'ensemble de la fonctionnalité, pas juste le décorateur.
Sur l'héritage :
Les dataclass génèrent automatiquement une méthode __init__ qui prend en compte à la fois les attributs de la classe parente et ceux de la classe fille.
from dataclasses import dataclass
@dataclass
class Parent:
a: str
b: int
@dataclass
class Enfant(Parent):
c: float
enfant = Enfant("test", 42, 3.14)
Juste une classe ^^
Merci Gabriel.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte