PHpullh
학습 라이브러리/Python/추상 클래스 (ABC)

PYTHON · 객체지향

추상 클래스 (ABC)

abc 모듈로 추상 클래스를 정의하여 하위 클래스에 메서드 구현을 강제합니다.

객체지향고급ABC추상 클래스abstractmethod인터페이스

핵심 설명

abc 모듈로 추상 클래스를 정의하여 하위 클래스에 메서드 구현을 강제합니다.

Python code

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self) -> float:
        """면적 계산"""
        ...

    @abstractmethod
    def perimeter(self) -> float:
        """둘레 계산"""
        ...

    def describe(self) -> str:
        return f"{self.__class__.__name__}: 면적={self.area():.2f}"

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

    def area(self) -> float:
        return 3.14159 * self.radius ** 2

    def perimeter(self) -> float:
        return 2 * 3.14159 * self.radius

class Rectangle(Shape):
    def __init__(self, w: float, h: float):
        self.w, self.h = w, h

    def area(self) -> float:
        return self.w * self.h

    def perimeter(self) -> float:
        return 2 * (self.w + self.h)

# Shape()  # TypeError: 추상 클래스 인스턴스 생성 불가
shapes = [Circle(5), Rectangle(3, 4)]
for s in shapes:
    print(s.describe())

학습 팁

추상 클래스에 구현이 있는 메서드(템플릿 메서드)를 함께 정의하면 공통 로직을 재사용할 수 있습니다.

주의할 점

추상 메서드를 하나라도 구현하지 않으면 하위 클래스도 추상 클래스가 되어 인스턴스를 생성할 수 없습니다.

자주 묻는 질문

추상 클래스 (ABC)란 무엇인가요?

abc 모듈로 추상 클래스를 정의하여 하위 클래스에 메서드 구현을 강제합니다.

추상 클래스 (ABC) 학습 시 주의할 점은 무엇인가요?

추상 메서드를 하나라도 구현하지 않으면 하위 클래스도 추상 클래스가 되어 인스턴스를 생성할 수 없습니다.