[python] 파이썬에서의 인터페이스를 통한 다형성 구현

파이썬은 다중 패러다임 프로그래밍 언어로서, 객체 지향 프로그래밍에서 다형성을 구현하는 데 매우 적합합니다. 인터페이스를 이용하면 다형성을 강력하게 지원할 수 있습니다. 다음은 파이썬에서 인터페이스를 활용하여 다형성을 구현하는 방법에 대한 예시입니다.

1. 인터페이스 정의하기

파이썬에서는 명시적으로 인터페이스를 지원하지는 않지만, 추상 베이스 클래스(ABC)를 사용하여 비슷한 효과를 낼 수 있습니다. 다음은 간단한 인터페이스를 정의하는 예시입니다.

from abc import ABC, abstractmethod

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

    @abstractmethod
    def perimeter(self):
        pass

2. 인터페이스를 이용한 다형성 구현하기

정의한 인터페이스를 상속받는 구체적인 클래스들을 만들어 다형성을 구현할 수 있습니다. 다음은 Shape 인터페이스를 상속받아 구체적인 도형 클래스들을 정의하는 예시입니다.

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

    def perimeter(self):
        return 2 * 3.14 * self.radius


class Square(Shape):
    def __init__(self, side):
        self.side = side

    def area(self):
        return self.side ** 2

    def perimeter(self):
        return 4 * self.side

3. 다형성 활용하기

이제 다형성을 활용하여 다양한 도형 객체를 생성하고, 일관된 방식으로 다룰 수 있습니다.

def print_shape_info(shape):
    print(f'Area: {shape.area()}, Perimeter: {shape.perimeter()}')

circle = Circle(5)
square = Square(4)

print_shape_info(circle)  # Circle의 area와 perimeter를 출력
print_shape_info(square)  # Square의 area와 perimeter를 출력

위와 같이 하나의 함수에서 Shape 인터페이스를 구현한 다양한 도형 객체를 다룰 수 있습니다.

파이썬의 다형성을 활용하여 인터페이스를 구현하면 코드의 유연성과 재사용성을 높일 수 있습니다.

이러한 다형성은 객체지향 설계 원칙 중 하나인 “개방-폐쇄 원칙”을 준수하는데 도움이 됩니다.

참고 자료