En Python, super() est une fonction intégrée utilisée pour appeler une méthode de la classe parente. Elle est particulièrement utile en héritage de classes lorsque vous souhaitez étendre ou modifier le comportement d'une méthode de la superclasse (classe parente) dans la sous-classe (classe enfant). super() est également essentielle pour l'initialisation correcte des sous-classes.
Pour comprendre comment super() peut être utilisée avec les méthodes et l'initialisation des classes, prenons l'exemple d'animaux qui émettent des sons. Nous allons créer une classe Animal et deux sous-classes, Dog et Cat.
class Animal: # Définir une classe nommée 'Animal'
def __init__(self, species):
self.species = species
def speak(self):
return 'Sounds...'
class Dog(Animal): # Définir une sous-classe nommée 'Dog' qui hérite de 'Animal'
def __init__(self, name):
super().__init__('Dog') # Appeler la méthode '__init__' du parent en utilisant 'super()'
self.name = name # Attribut supplémentaire 'name' pour 'Dog'
print(self.species) # Affichera Dog
def speak(self):
original = super().speak() # Appeler la méthode 'speak' du parent en utilisant 'super()'
return original + ' Woof!'
class Cat(Animal): # Définir une sous-classe nommée 'Cat' qui hérite de 'Animal'
def __init__(self, name):
super().__init__('Cat') # Appeler la méthode '__init__' du parent en utilisant 'super()'
self.name = name # Attribut supplémentaire 'name' pour 'Cat'
def speak(self):
original = super().speak() # Appeler la méthode 'speak' du parent en utilisant 'super()'
return original + ' Meow!'
dog = Dog('Rex') # Créer une instance de la classe 'Dog'
cat = Cat('Fluffy') # Créer une instance de la classe 'Cat'
print(dog.name, dog.species, dog.speak()) # Rex Dog Sounds... Woof!
print(cat.name, cat.species, cat.speak()) # Fluffy Cat Sounds... Meow!
Ici, les sous-classes Dog et Cat utilisent toutes deux super().__init__() pour appeler la méthode __init__() de leur superclasse Animal. Cela garantit que chaque instance de Dog ou Cat est correctement initialisée avec le nom d'espèce respectif. De même, la méthode speak() dans les deux sous-classes utilise super().speak() pour appeler la méthode speak() de Animal, leur permettant d'inclure le son animal original dans leurs propres méthodes speak().
Ainsi, la fonction super() permet à une sous-classe de tirer parti et d'étendre le comportement de sa superclasse. Elle joue un rôle crucial dans l'amélioration de la réutilisabilité du code, en garantissant une initialisation correcte des sous-classes, et en gardant votre code modulaire et lisible. Cela en fait finalement un outil puissant en programmation orientée objet avec Python.
Défi : Classes de véhicules
Votre tâche consiste à créer des classes pour différents types de véhicules. Ces classes doivent simuler certaines propriétés et comportements de véhicules réels.
Classe Vehicle : la classe de base. Elle doit avoir les attributs suivants :
make: represents the manufacturer of the vehicle.
model: represents the specific model of the vehicle.
year: represents the year the vehicle was manufactured.
A method named honk() that, when called, prints the string Honk!.
Classe Car : cette classe doit hériter de la classe Vehicle. Elle doit avoir tous les attributs et méthodes de la classe Vehicle, plus les éléments suivants :
color: represents the color of the car.
It should override the honk() method of the Vehicle class.
When called, this method should print the string Beep beep!.
Classe Bicycle : cette classe doit également hériter de la classe Vehicle. Elle doit avoir tous les attributs et méthodes de la classe Vehicle, mais elle doit redéfinir la méthode honk().
Lorsqu'elle est appelée, cette méthode doit afficher Ring ring!.
Votre tâche est d'implémenter ces classes et méthodes.