[python] abc, abc.ABC abc.abstractmethod

About_work·2024년 3월 14일
0

python 기초

목록 보기
53/56
  • Python의 abc 모듈은 "Abstract Base Classes"의 약자로, 사용자가 인터페이스를 정의할 수 있게 해주는 기능을 제공
  • 이를 통해 개발자는 어떤 클래스가 특정 메서드를 반드시 구현하도록 강제할 수 있음
  • 이런 방식은 특히 다형성을 활용할 때 유용하며, 큰 프로젝트에서 인터페이스의 일관성을 유지하는 데 도움을 줍니다.

abc 모듈의 기본 사용방법

  1. 모듈 임포트: 먼저 abc 모듈을 임포트해야 합니다. 이 모듈에서 가장 중요한 두 가지는 ABC 클래스와 abstractmethod 데코레이터

  2. 추상 기반 클래스 정의: 클래스를 정의할 때 ABC 클래스를 상속받아 추상 기반 클래스(abstract base class)를 만듭니다.

  3. 추상 메서드 정의:

  • 클래스 내에서 하나 이상의 메서드를 @abstractmethod 데코레이터를 사용해 추상 메서드로 지정
  • 추상 메서드는 구현부가 없으며, 이 클래스를 상속받는 모든 자식 클래스에서 해당 메서드를 반드시 구현해야 합니다.

예제 코드

아래는 abc 모듈을 사용하는 간단한 예제입니다.

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

    @abstractmethod
    def perimeter(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def perimeter(self):
        return 2 * (self.width + self.height)

# 이제 Rectangle 클래스는 Shape 클래스의 모든 추상 메서드(area, perimeter)를 구현해야 합니다.
# Shape 클래스의 인스턴스를 직접 생성할 수 없으며, Rectangle 같이 모든 추상 메서드를 구현한
# 자식 클래스의 인스턴스만 생성할 수 있습니다.
  • 이 예제에서 Shape 클래스는 추상 기반 클래스로, 두 개의 추상 메서드(area, perimeter)를 정의합니다.
  • 이 메서드들은 구현부가 없으며, Shape를 상속받는 모든 클래스는 이 메서드들을 구현해야 인스턴스를 생성할 수 있습니다.
  • Rectangle 클래스는 이 두 메서드를 구현하므로 Shape의 유효한 하위 클래스가 됩니다.

  • 추상 메서드는 실제 작업을 수행하는 코드 없이 메서드의 시그니처만을 정의합니다.
  • 이를 통해 개발자는 인터페이스의 일관성을 유지하면서도 다양한 구현을 할 수 있게 됩니다.
  • abc 모듈을 사용하면 프로그램의 유연성을 높이고, 오류를 줄이며, 유지보수성을 개선할 수 있습니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글