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) 학습 시 주의할 점은 무엇인가요?
추상 메서드를 하나라도 구현하지 않으면 하위 클래스도 추상 클래스가 되어 인스턴스를 생성할 수 없습니다.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.