All about

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를 사용하면 특정 타입의 인스턴스를 기대하는 함수나 메서드에서 타입을 검사하는데 도움이 됩니다. 또한, 코드의 가독성과 문서화를 향상시킵니다.
추상 클래스를 사용하면 유지보수가 쉽고 확장 가능한 코드를 작성할 수 있습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading