ABC(추상 기본 클래스, Abstract Base Class)는 Python에서 제공하는 기능 중 하나로, 클래스의 추상적인 인터페이스를 정의하는 데 사용됩니다. ABC는 일종의 템플릿 역할을 하며, 구체적인 구현을 강제하지 않고 메서드나 속성의 형태만을 지정합니다. ABC를 사용하면 다형성을 촉진하고 코드의 일관성을 유지하는 데 도움이 됩니다.
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
def perimeter(self):
return 2 * 3.14 * self.radius
class Square(Shape):
def __init__(self, side_length):
self.side_length = side_length
def area(self):
return self.side_length * self.side_length
def perimeter(self):
return 4 * self.side_length
# 사용 예제
circle = Circle(radius=5)
square = Square(side_length=4)
print(f"Circle Area: {circle.area()}")
print(f"Circle Perimeter: {circle.perimeter()}")
print(f"Square Area: {square.area()}")
print(f"Square Perimeter: {square.perimeter()}")
이 예제에서 Shape 클래스는 추상 클래스로, area와 perimeter라는 추상 메서드를 정의하고 있습니다. 실제 구현은 하위 클래스에서 제공되어야 합니다. Circle과 Square 클래스는 Shape 클래스를 상속하며, 각각의 형태에 맞게 area와 perimeter 메서드를 구현합니다.
추상 메서드 정의: ABC는 추상 메서드를 정의하여 하위 클래스에서 반드시 제공해야 하는 메서드를 명시합니다.
인터페이스 제공: ABC는 클래스가 가져야 하는 메서드나 속성의 일종의 인터페이스 역할을 합니다. 이를 통해 클래스 간의 일관성을 유지하고 다형성을 강화할 수 있습니다.
강제적 구현: ABC에서 정의한 추상 메서드는 하위 클래스에서 반드시 구현되어야 합니다. 이를 통해 특정한 규약을 갖춘 클래스를 만들 수 있습니다.
타입 검사 및 문서화: ABC를 사용하면 특정 타입의 인스턴스를 기대하는 함수나 메서드에서 타입을 검사하는데 도움이 됩니다. 또한, 코드의 가독성과 문서화를 향상시킵니다.
추상 클래스를 사용하면 유지보수가 쉽고 확장 가능한 코드를 작성할 수 있습니다.