Exemple :
class Dog: # The constructor method def __init__(self, name, breed): self.name = name # Attribute self.breed = breed # Method (function in the class) def bark(self): print(f"{self.name} says woof!") # Creating an object of the Dog class dog1 = Dog("Buddy", "Golden Retriever") dog1.bark() # Output: Buddy says woof!
Ici, Dog est une classe (le plan) et dog1 est un objet créé à partir de ce plan.
L'encapsulation consiste à assurer la sécurité des données et à autoriser uniquement l'interaction avec elles via des méthodes contrôlées. En utilisant des attributs privés (préfixés par _ ou __), nous garantissons qu'ils ne sont pas accessibles directement.
Exemple :
class BankAccount: def __init__(self, balance): self.__balance = balance # Private attribute def deposit(self, amount): self.__balance += amount def get_balance(self): return self.__balance account = BankAccount(100) account.deposit(50) print(account.get_balance()) # Output: 150
__balance est privé, nous interagissons donc avec lui uniquement via les méthodes deposit() et get_balance().
L'héritage permet à une classe (enfant) de dériver des attributs et des méthodes d'une autre classe (parent), permettant la réutilisation du code et créant une hiérarchie naturelle.
Exemple :
class Animal: def __init__(self, name): self.name = name def make_sound(self): pass class Dog(Animal): def make_sound(self): return "Woof!" class Cat(Animal): def make_sound(self): return "Meow!" dog = Dog("Buddy") cat = Cat("Whiskers") print(dog.make_sound()) # Output: Woof! print(cat.make_sound()) # Output: Meow!
Ici, le chien et le chat héritent d'Animal, ce qui signifie qu'ils peuvent partager des propriétés et des comportements communs, mais également avoir des comportements uniques grâce au remplacement de méthode.
Le polymorphisme permet aux méthodes de fonctionner différemment selon l'objet qui les appelle. Ceci est utile dans des cas tels que le remplacement de méthodes dans les classes enfants, où chaque sous-classe peut implémenter un comportement à sa manière.
Exemple :
class Shape: def area(self): pass class Square(Shape): def __init__(self, side): self.side = side def area(self): return self.side * self.side class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius * self.radius shapes = [Square(4), Circle(3)] for shape in shapes: print(shape.area())
Chaque forme calcule son aire différemment, même si elles partagent le même nom de méthode, Area(). C'est le polymorphisme en action.
L'abstraction se concentre sur l'affichage uniquement des caractéristiques essentielles et sur le masquage des détails complexes. Ceci est souvent réalisé en utilisant des classes abstraites ou des interfaces (en utilisant le module abc en Python).
Exemple :
from abc import ABC, abstractmethod class Vehicle(ABC): @abstractmethod def start_engine(self): pass class Car(Vehicle): def start_engine(self): return "Car engine started!" class Motorcycle(Vehicle): def start_engine(self): return "Motorcycle engine started!" car = Car() motorcycle = Motorcycle() print(car.start_engine()) # Output: Car engine started! print(motorcycle.start_engine()) # Output: Motorcycle engine started!
Ici, Vehicle est une classe abstraite qui définit start_engine mais ne l'implémente pas. Les classes Voiture et Moto proposent des implémentations spécifiques, nous permettant de nous concentrer uniquement sur le comportement pertinent pour chaque type de véhicule.
En maîtrisant ces principes de POO (encapsulation, héritage, polymorphisme et abstraction), vous n'écrivez pas seulement du code ; vous concevez un système complet avec structure, clarté et efficacité.
Bienvenue dans le club des « architectes cool » de Python. ??"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!