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 !

Python - Classes & Objects

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