Classes de base abstraites

Programmation orientée objet intermédiaire en Python

Jake Roach

Data Engineer

Classes de base abstraites

Les classes de base abstraites servent de plan pour les classes en définissant des méthodes abstraites à implémenter par tous les enfants

  • Assure un comportement commun pour un ensemble de classes
  • Décorateur @abstractmethod
  • Destinées à être héritées, pas instanciées
  • Toutes les méthodes n'ont pas à être abstraites (méthodes concrètes)
class School:
    # Effectuer des actions comme inscrire 
    # et ajouter un cours
class MiddleSchool:
    # Jouer d'un instrument, joindre un club
    # mais doit inscrire et ajouter des cours
class HighSchool:
    # Faire un sport interscolaire, postuler
    # au cégep/université, mais doit inscrire 
    # et ajouter des cours
Programmation orientée objet intermédiaire en Python

Créer une classe de base abstraite

from abc import ABC, abstractmethod

# Créer une classe de base abstraite qui hérite # de ABC class School(ABC): @abstractmethod def enroll(self): # Cette méthode doit être implémentée # dans les classes qui en héritent pass
# Les méthodes concrètes sont héritées def graduate(self): print("Congrats on graduating!")
  • Hériter de la classe ABC du module abc
  • pass
  • Toute classe qui hérite de School doit implémenter la méthode enroll()
  • Peut aussi définir des méthodes concrètes
Programmation orientée objet intermédiaire en Python

Implémenter des classes de base abstraites

class HighSchool(School):
    def enroll(self):
        print("Welcome to high school!")

# Créer une instance de HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
  • HighSchool doit définir une méthode enroll()
  • TypeError si enroll() n'est pas définie
  • HighSchool hérite de la méthode graduate()
Programmation orientée objet intermédiaire en Python

Multiples méthodes abstraites

class School(ABC):
    @abstractmethod
    def enroll(self):
        pass

    @abstractmethod
    def add_course(self, course_name):
        pass

    def graduate(self):
        print("Congrats on graduating!")

  • Deux méthodes abstraites : enroll() et add_course()
class HighSchool(School):
    def __init__(self):
        self.courses = []

    # Implémentation de la méthode abstraite
    def enroll(self):
        print("Welcome to high school!")

    # Implémentation de la méthode abstraite
    def add_course(self, course_name):
        self.courses.append(course_name)
        print(f"You enrolled in {course_name}")

Programmation orientée objet intermédiaire en Python

Passons à la pratique !

Programmation orientée objet intermédiaire en Python

Preparing Video For Download...