Python - Classes et Objets
Bonjour à toi, aspirant programmeur Python !aujourd'hui, nous allons entamer un voyage passionnant dans le monde de la Programmation Orientée Objet (POO) en Python. boucle-toi, car nous allons transformer ta manière de penser sur le code !
Qu'est-ce qu'une Classe en Python ?
Imagine que tu construis un zoo virtuel. Tu ne créerais pas chaque animal à partir de zéro, n'est-ce pas ? C'est là que les classes deviennent pratiques !
Une classe en Python est comme un plan ou un modèle pour créer des objets. Elle définit un ensemble d'attributs et de méthodes que les objets de cette classe auront.
Créons une classe simple pour représenter un chien :
class Chien:
def __init__(self, nom, race):
self.nom = nom
self.race = race
def aboyer(self):
print(f"{self.nom} dit Woof !")
Dans cet exemple, Chien
est notre classe. Elle a des attributs comme nom
et race
, et une méthode appelée aboyer()
.
Création de Classes en Python
Créer une classe est aussi simple que d'utiliser le mot-clé class
suivi du nom de la classe. Créons une classe Voiture
plus détaillée :
class Voiture:
def __init__(self, marque, modèle, année):
self.marque = marque
self.modèle = modèle
self.année = année
self.compteur = 0
def conduire(self, distance):
self.compteur += distance
print(f"À conduit {distance} miles. Total : {self.compteur} miles")
def klaxonner(self):
print("Bip bip !")
Ici, __init__
est un méthode spéciale appelée constructeur. Elle est appelée lorsque nous créons un nouvel objet de cette classe.
Qu'est-ce qu'un Objet ?
Si une classe est un plan, un objet est la "chose" réelle créée à partir de ce plan. C'est une instance spécifique d'une classe.
Création d'Objets de Classes en Python
Créer un objet (appelé aussi instanciation) est comme utiliser notre plan pour créer quelque chose de réel. Créons quelques voitures :
ma_voiture = Voiture("Toyota", "Corolla", 2020)
ta_voiture = Voiture("Honda", "Civic", 2019)
print(ma_voiture.marque) # Sortie : Toyota
ta_voiture.conduire(50) # Sortie : À conduit 50 miles. Total : 50 miles
ma_voiture.klaxonner() # Sortie : Bip bip !
Chaque voiture est un objet séparé avec son propre ensemble d'attributs et de méthodes.
Accès aux Attributs des Objets en Python
Nous pouvons accéder aux attributs d'un objet en utilisant la notation pointée. Examinons notre voiture :
print(f"Ma voiture est une {ma_voiture.année} {ma_voiture.marque} {ma_voiture.modèle}")
# Sortie : Ma voiture est une 2020 Toyota Corolla
Attributs de Classe Intégrés en Python
Les classes Python comportent des attributs intégrés. Explorons-les :
class MaClasse:
x = 5
print(MaClasse.__name__) # Sortie : MaClasse
print(MaClasse.__module__) # Sortie : __main__
print(MaClasse.__dict__) # Sortie : {'__module__': '__main__', 'x': 5, ...}
Type de Données Intégré de Python en Classe
Savais-tu que même les types de base Python sont des objets ? Vérifions cela :
print(type(5)) # Sortie : <class 'int'>
print(type("Bonjour")) # Sortie : <class 'str'>
print(type([1, 2, 3])) # Sortie : <class 'list'>
Tout dans Python est un objet !
Collecte des Ordures (Destruction des Objets) en Python
En Python, nous n'avons pas besoin de détruire manuellement les objets. Le collecteur de déchets de Python s'occupe automatiquement de cela lorsque l'objet n'est plus utilisé.
import gc
# Créer un objet
ma_voiture = Voiture("Toyota", "Corolla", 2020)
# Supprimer la référence
ma_voiture = None
# Forcer la collecte des ordures (en général, ce n'est pas nécessaire)
gc.collect()
Caché des Données en Python
Dans la POO, nous voulons souvent contrôler l'accès à certains attributs. Python utilise la convention de préfixer les attributs avec des underscores :
class CompteBancaire:
def __init__(self, solde):
self._solde = solde # Attribut protégé
self.__secret = "shh" # Attribut privé
def déposer(self, montant):
self._solde += montant
def get_solde(self):
return self._solde
compte = CompteBancaire(1000)
print(compte._solde) # Sortie : 1000 (mais nous ne devrions pas le faire !)
print(compte.__secret) # Cela va lever une AttributeError
Voici un tableau résumant les méthodes que nous avons couvertes :
Méthode | Description |
---|---|
__init__(self, ...) |
Méthode constructeur, appelée lors de la création d'un nouvel objet |
__str__(self) |
Retourne une représentation en chaîne de caractères de l'objet |
__repr__(self) |
Retourne une représentation détaillée en chaîne de caractères de l'objet |
__len__(self) |
Définit le comportement de la fonction intégrée len()
|
__getitem__(self, clé) |
Définit le comportement des opérations d'indexation |
__setitem__(self, clé, valeur) |
Définit le comportement des affectations aux valeurs indexées |
Et voilà ! Tu as juste pris tes premiers pas dans le monde de la Programmation Orientée Objet en Python. souviens-toi, la pratique fait le maître. Essaye de créer tes propres classes et objets, et bientôt tu construiras des programmes complexes et efficaces comme un pro !
Credits: Image by storyset