728x90
추상클래스(abstract class)란
추상클래스란 미구현 추상메소드를 한 개 이상 가지며,
자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제한다.
상속받은 class는 abstract method를 구현하지 않아도, import할 때까지 에러는 발생하지 않으나 객체를 생성할 시 에러가 발생함.
### 추상메소드
# 추상메소드 형식
from abc import *
class 추상클래스명(metaclass=ABCMeta):
@abstractmethod
def 추상메소드(self):
pass
예제) abstract.py 만들기
from abc import *
class AbstractCountry(metaclass=ABCMeta):
name = '국가명'
population = '인구'
capital = '수도'
def show(self):
print('국가 클래스의 메소드입니다.')
class Korea(AbstractCountry):
def __init__(self, name,population, capital):
self.name = name
self.population = population
self.capital = capital
def show_name(self):
print('국가 이름은 : ', self.name)
추상 매소드를 작성하지 않았지만 기본적인 클래스의 기능은 작동하는 코드입니다.
class AbstractCountry에 abstract method를 추가합니다.
class AbstractCountry(metaclass=ABCMeta):
name = '국가명'
population = '인구'
capital = '수도'
def show(self):
print("국가 클래스의 method 입니다.")
# abstract method 추가하기
@abstractmethod
def show_capital(self):
print("국가의 수도는?")
장식자인 @abstractmethod를 작성하고 abstract method를 작성합니다.
이제 Korea class에서 상속받는 abstract method를 구현한다.
class Korea(AbstractCountry):
def __init__(self, name, population, captial):
self.name = name
self.population = population
self.capital = captial
def show_name(self):
print("국가 이름은 : " + self.name)
def show_capital(self):
super().show_capital()
print("국가 수도 : " + self.capital)
def show_capital(self):
super().show_capital()
print()
def show_capital(self)구문으로 Korea 클래스를 상속받는 abstract method를 구현한다.
반응형
'python' 카테고리의 다른 글
python cv2로 동영상 프레임별로 나누기, 클립 따기 (1) | 2023.05.03 |
---|---|
python - 집합 자료형, 교집합, 합집합, 차집합 (0) | 2022.05.02 |
python - 객체 지향 프로그래밍(클래스, 생성자, 인스턴트 변수, 메소드) (0) | 2022.05.02 |
python - Override (재정의) (0) | 2022.04.29 |
python - Class member, Class method (0) | 2022.04.29 |
댓글