Python 中級オブジェクト指向プログラミング
Jake Roach
Data Engineer
抽象基底クラスは、すべての子クラスが実装すべき抽象メソッドを定義して、クラスの設計図を作る
@abstractmethod デコレータclass School:
# enroll などを行う
# およびコース追加
class MiddleSchool:
# 楽器やクラブに参加
# ただし enroll とコース追加は必須
class HighSchool:
# 部活動や大学出願
# ただし enroll とコース追加は必須
from abc import ABC, abstractmethod# ABC を継承して抽象基底クラスを作成 class School(ABC): @abstractmethod def enroll(self): # 継承先で必ず実装する pass# 具体メソッドは継承される def graduate(self): print("Congrats on graduating!")
abc モジュールの ABC を継承passSchool を継承するクラスは enroll() を必ず実装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 は enroll() を定義しなければならないTypeErrorHighSchool は 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 = []
# 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}")
Python 中級オブジェクト指向プログラミング