抽象クラス
抽象クラス
使用
ABCMeta
、abstractmethod
を導入する.from abc import ABCMeta
from abc import abstractmethod
抽象クラス
class Recipe(metaclass=ABCMeta): # 추상 클래스는 ABCMeta를 상속 받아야 한다.
def __init__(self):
self.my_ingredients = []
def wash_hands(self, has_washed): # 손을 반드시 씻어야 한다.
return has_washed
@abstractmethod
def prepare(self): # Recipe 클래스를 상속 받는 모든 클래스는 prepare 메소드를 오버라이딩 해야 한다.
raise NotImplementedError()
Recipe抽象クラスはインスタンス化できません.抽象クラスに実装内容がなく、実装が必要なメソッドのみがリストされている場合、この抽象クラスはインタフェースとも呼ばれます.
サブクラス
Recipe抽象クラスを継承するサブクラスを作成して多形性を実現できるようになりました.
サブクラス
class BeefStaek(Recipe):
def prepare(self, beef):
if self.wash_hands():
self.my_ingredients.append(beef)
else:
pass
def __str__(self):
return f"Beef staek made with: {self.my_ingredients}"
実行beef_staek = BeefStaek() # 인스턴스화
print(beef_staek) # "Beef staek made with: []"
beef_staek.wash_hands(has_washed=True) # 손을 씻는다.
beef_staek.prepare(beef='beef') # 재료를 추가해 확인하기
print(beef_staek) # "Beef staek made with: ['beef']"
リファレンスReference
この問題について(抽象クラス), 我々は、より多くの情報をここで見つけました https://velog.io/@combi_jihoon/추상화-클래스Abstract-Base-Classテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol