[python] 추상 클래스와 인터페이스

Python에서 추상 클래스와 인터페이스를 사용하여 코드를 구조화하는 방법을 알아보겠습니다.

추상 클래스

추상 클래스는 하나 이상의 추상 메서드를 포함하고 있는데, 이 메서드들은 구현되지 않은 빈 메서드입니다. 따라서 추상 클래스는 직접 인스턴스화할 수 없습니다.

from abc import ABC, abstractmethod

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

    @abstractmethod
    def perimeter(self):
        pass

위의 예제에서 Shape는 추상 클래스이며 areaperimeter 메서드가 추상 메서드로 정의되어 있습니다. 이 추상 클래스를 상속받는 하위 클래스는 반드시 추상 메서드를 구현해야 합니다.

인터페이스

파이썬은 명시적으로 인터페이스를 지원하지는 않지만, 추상 클래스와 유사한 역할을 하는 추상 메서드만을 가진 클래스를 통해 인터페이스를 모방할 수 있습니다.

from abc import ABC, abstractmethod

class Drawable(ABC):
    @abstractmethod
    def draw(self):
        pass

class Circle(Drawable):
    def draw(self):
        print("Drawing a circle")

class Square(Drawable):
    def draw(self):
        print("Drawing a square")

위의 예제에서 Drawable은 추상 클래스처럼 동작하며, CircleSquare 클래스는 Drawable을 상속받아 draw 메서드를 구현합니다.

결론

Python에서 추상 클래스와 인터페이스를 사용하여 코드를 구조화할 수 있습니다. 이를 통해 코드의 유지보수성과 확장성을 높일 수 있습니다.

참고 자료: Python 공식 문서