[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
인터페이스를 구현한 다양한 도형 객체를 다룰 수 있습니다.
파이썬의 다형성을 활용하여 인터페이스를 구현하면 코드의 유연성과 재사용성을 높일 수 있습니다.
이러한 다형성은 객체지향 설계 원칙 중 하나인 “개방-폐쇄 원칙”을 준수하는데 도움이 됩니다.
참고 자료
- 파이썬 공식 문서: ABC
- GeeksforGeeks: Polymorphism in Python