-
Python 문법 기초 29 - 추상 클래스(추상 메소드)Python 2022. 10. 22. 17:12
추상클래스는 자식 클래스에서 부모의 메소드의 이름을 강요하도록 하기 위해 사용한다. 그 이유는 다형성을 구사하기 위해서이다.
# 추상 클래스 (추상 메소드) # 자식 클래스에서 부모의 메소드의 이름을 강요하도록 하기 위해 사용 from abc import * class AbstractClass(metaclass = ABCMeta): # 추상 클래스가 된다. @abstractmethod def myMethod(self): # 추상 메소드가 됨 pass def normalMethod(self): print('추상 클래스는 일반 메소드를 가질 수도 있다.') # parent = AbstractClass() Can't instantiate abstract class class Child1(AbstractClass): name = '난 Child1' c1 = Child1() print(c1.name) c1.myMethod() c1.normalMethod() <console> 난 Child1 Child1에서 추상 메소드에 내용을 적음 추상 클래스는 일반 메소드를 가질 수도 있다.
java와 다르게 파이썬에서는 추상 클래스에서 일반 메소드를 가질 수 있다.
추상 클래스를 부모 클래스로 가져와놓고 override를 하지 않으면 err가 발생한다.
추상 메소드에는 무조건 @abstractmethod를 위에 붙여야된다.
class Child2(AbstractClass): def myMethod(self): # 추상 메소드가 됨 print('Child2에서 추상의 마법을 풀다.') print('이제는 자유다') def normalMethod(self): print('추상 클래스의 일반 메소드는 오버라이딩이 선택적이다.') def good(self): print('Child2 고유 메소드') c2 = Child2() c2.myMethod() c2.normalMethod() c2.good() <console> Child2에서 추상의 마법을 풀다. 이제는 자유다 추상 클래스의 일반 메소드는 오버라이딩이 선택적이다. Child2 고유 메소드
imsi = c1 imsi.myMethod() print() imsi = c2 imsi.myMethod() <console> Child1에서 추상 메소드에 내용을 적음 Child2에서 추상의 마법을 풀다. 이제는 자유다
같은 함수를 호출하지만 값이 다르다. 다양성을 추구하기 위해 추상 메소드를 사용한다.
'Python' 카테고리의 다른 글
Python 문법 기초 30 - 예외처리(try ~ except) (0) 2022.10.22 추상 메소드 예제 (0) 2022.10.22 class 상속문제 예제 (0) 2022.10.22 Python 문법 기초 28 - class 다중 상속 (0) 2022.10.22 Python 문법 기초 27 - class method override(재정의), 다형성 (0) 2022.10.22