[Python] 추상 클래스 (Abstract Class)

정은·2023년 7월 18일

PYTHON

목록 보기
5/6
post-thumbnail

파이썬도 OOP 언어이므로 추상 클래스가 존재한다.

추상 클래스

정의

  • 메소드의 목록만 가지는 클래스를 말한다. (추상 메소드가 하나 이상 있는 클래스)
  • 상속 받는 자식 클래스에서 부모의 추상 메소드를 필수적으로 구현해야 한다.
  • 추상 클래스는 인스턴스를 생성할 수 없다.
  • 추상 클래스는 상속을 위해서 사용한다.
  • 자식 클래스에서 추상 클래스의 메소드를 정의하지 않으면 오류가 발생한다.

abc 모듈

추상 클래스를 정의하려면 해당 abc모듈을 사용해야한다.

abc 모듈은 추상 베이스 클래스(ABC : Abstract Base Class)를 정의하기 위해 기초를 제공하는 모듈이다.
추상 클래스를 사용하려면 반드시 abc 모듈을 import 하고, 생성하는 추상 클래스의 메타 클래스는 ABCMeta로 지정해야 된다.

from abc import * # 추상 클래스 사용을 위해 abc module import

class Animal(metaclass=ABCMeta): # 추상 클래스 Animal 생성
	@abstractmethod # 데코레이터를 사용하여 move() 메소드를 추상 메소드로 지정
    def move(self):
    	pass

class Human(Animal):
	def move(self):
    	print("두 발로 움직입니다.") # 추상 메소드 오버라이드
        
class Dog(Animal):
	def move(self):
    	print("네 발로 움직입니다.") # 추상 메소드 오버라이드

h = Human()
h.move()

d = Dog()
d.move()

추상 클래스 생성할 때에는 꼭 metacalass=ABCMeta로 지정하고 추상 메소드를 생성할 때에는 데코레이터 @abstractmethod를 통해 지정해야 한다.

profile
정니의 이런거 저런거 기록 일지 😛

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기