Середній рівень об'єктно-орієнтованого програмування в Python
Jake Roach
Data Engineer
Абстрактні базові класи задають кресленик для класів, визначаючи абстрактні методи, які мають бути реалізовані всіма нащадками
@abstractmethodclass School:
# Робити дії, як-от зарахування
# та додавання курсу
class MiddleSchool:
# Грати на інструменті, вступати до клубу
# але потрібно зараховувати й додавати курси
class HighSchool:
# Грати у спортивній команді, подаватися
# до коледжу, але потрібно зараховувати
# й додавати курси
from abc import ABC, abstractmethod# Створіть абстрактний базовий клас, # що наслідує від ABC class School(ABC): @abstractmethod def enroll(self): # Цей метод потрібно реалізувати # у класах-нащадках pass# Конкретні методи наслідуються def graduate(self): print("Congrats on graduating!")
ABC з модуля abcpassSchool, має реалізувати метод enroll()class HighSchool(School):
def enroll(self):
print("Welcome to high school!")
# Створіть екземпляр HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
HighSchool має визначити метод enroll()TypeError, якщо enroll() не визначеноHighSchool наслідує метод graduate()class School(ABC):
@abstractmethod
def enroll(self):
pass
@abstractmethod
def add_course(self, course_name):
pass
def graduate(self):
print("Congrats on graduating!")
enroll() і add_course()class HighSchool(School):
def __init__(self):
self.courses = []
# Реалізація абстрактного методу
def enroll(self):
print("Welcome to high school!")
# Реалізація абстрактного методу
def add_course(self, course_name):
self.courses.append(course_name)
print(f"You enrolled in {course_name}")
Середній рівень об'єктно-орієнтованого програмування в Python