Gevorderde objectgeoriënteerde programmering in Python
Jake Roach
Data Engineer
Abstracte basisklassen vormen een blauwdruk door abstracte methods te eisen die alle kinderen moeten implementeren
@abstractmethod-decoratorclass School:
# Doe dingen zoals inschrijven
# en een vak toevoegen
class MiddleSchool:
# Speel een instrument, sluit je aan bij een club
# maar moet inschrijven en vakken toevoegen
class HighSchool:
# Speel een varsitysport, solliciteer
# voor college, maar moet inschrijven
# en vakken toevoegen
from abc import ABC, abstractmethod# Maak een abstracte basisklasse die erft # van ABC class School(ABC): @abstractmethod def enroll(self): # Deze method moet worden geïmplementeerd # in klassen die hiervan erven pass# Concrete methods worden geërfd def graduate(self): print("Congrats on graduating!")
ABC-klasse in de abc-modulepassSchool erft, moet enroll() implementerenclass HighSchool(School):
def enroll(self):
print("Welcome to high school!")
# Maak een instantie van HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
HighSchool moet een enroll()-method definiërenTypeError als enroll() niet is gedefinieerdHighSchool erft de graduate()-methodclass School(ABC):
@abstractmethod
def enroll(self):
pass
@abstractmethod
def add_course(self, course_name):
pass
def graduate(self):
print("Congrats on graduating!")
enroll() en 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}")
Gevorderde objectgeoriënteerde programmering in Python