Clase de bază abstracte

Programare orientată pe obiecte intermediară în Python

Jake Roach

Data Engineer

Clase de bază abstracte

Clasele de bază abstracte creează un șablon pentru clase, definind metode abstracte care trebuie implementate de toți descendenții

  • Asigură un comportament comun pentru un grup de clase
  • Decoratorul @abstractmethod
  • Destinate moștenirii, nu instanțierii
  • Nu toate metodele dintr-o clasă abstractă trebuie să fie abstracte (metode concrete)
class School:
    # Do things such as enroll 
    # and add a course
class MiddleSchool:
    # Play an instrument, join a club
    # but must enroll and add courses
class HighSchool:
    # Play a varsity sport, apply
    # for college, but must enroll 
    # and add courses
Programare orientată pe obiecte intermediară în Python

Crearea unei clase de bază abstracte

from abc import ABC, abstractmethod

# Create an abstract base class that inherits # from ABC class School(ABC): @abstractmethod def enroll(self): # This method must be implemented # in classes that inherit from it pass
# Concrete methods are inherited def graduate(self): print("Congrats on graduating!")
  • Moștenire din clasa ABC din modulul abc
  • pass
  • Orice clasă care moștenește School trebuie să implementeze metoda enroll()
  • Pot fi implementate și metode concrete
Programare orientată pe obiecte intermediară în Python

Implementarea claselor de bază abstracte

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

# Create an instance of HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
  • HighSchool trebuie să definească o metodă enroll()
  • TypeError dacă enroll() nu este definită
  • HighSchool moștenește metoda graduate()
Programare orientată pe obiecte intermediară în Python

Metode abstracte multiple

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

    @abstractmethod
    def add_course(self, course_name):
        pass

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

  • Două metode abstracte, enroll() și add_course()
class HighSchool(School):
    def __init__(self):
        self.courses = []

    # Implementing abstract method
    def enroll(self):
        print("Welcome to high school!")

    # Implementing abstract method
    def add_course(self, course_name):
        self.courses.append(course_name)
        print(f"You enrolled in {course_name}")

Programare orientată pe obiecte intermediară în Python

Să exersăm!

Programare orientată pe obiecte intermediară în Python

Preparing Video For Download...