Logo
내 게시판 만들기
파이썬

추상 클래스(ABC) — 인터페이스 강제

야옹이 | 2026.04.27 06:20:10
조회 15 | 추천 0

추상 클래스(Abstract Base Class, ABC)는 「자기는 직접 인스턴스를 만들 수 없고, 자식 클래스가 반드시 구현해야 할 메서드를 명시하는」 클래스입니다.

「이 클래스를 상속받으려면 이 메서드들은 꼭 구현해야 한다」는 강제력을 부여합니다.



기본 사용.

from abc import ABC, abstractmethod.

class Animal(ABC): @abstractmethod; def speak(self): pass.

class Dog(Animal): def speak(self): print("멍멍").

Animal()을 시도하면 「추상 메서드를 구현하지 않은 채 인스턴스화하려 함」 오류.

Dog는 speak를 구현했으므로 OK.



왜 필요한가?

큰 프로젝트에서 「플러그인 시스템」, 「전략 패턴」 같은 곳에 유용합니다.

새로운 결제 수단을 추가할 때 「PaymentMethod 추상 클래스를 상속하고 process() 메서드를 반드시 구현하라」는 약속을 강제할 수 있습니다.



비유하자면 ABC는 「건축 설계도 표준」과 같습니다.

「모든 집은 입구·창문·지붕이 있어야 한다」는 규격을 정해 두면, 실제 집을 짓는 건축가는 그 규격을 따르지 않으면 「이건 집이 아닙니다」 판정이 납니다.

코드의 일관성을 보장하는 도구입니다.



더 가벼운 대안으로 「Protocol」(typing.Protocol)이 있습니다.

명시적 상속 없이 「이 메서드들을 가지고 있으면 이 타입으로 본다」는 「덕 타이핑 + 타입 힌트」 결합입니다.

ABC가 「엄격한 계약」이라면 Protocol은 「유연한 약속」 — 작은 코드에서는 Protocol이, 큰 프레임워크에서는 ABC가 자주 쓰입니다.




한 줄 요약


ABC는 「자식이 반드시 구현해야 할 메서드를 강제하는」 추상 클래스입니다.

플러그인·전략 패턴에서 일관성 보장에 유용하며, Protocol은 더 유연한 대안입니다.




더 알아볼 것


- abstractmethod의 동작 원리

- collections.abc — 표준 ABC들

- Protocol vs ABC

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 12 0
70 곰돌이 26/04/27 14 0
69 구름이 26/04/27 16 0
68 부엉이 26/04/27 13 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 16 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 14 0
63 부엉이 26/04/27 17 0
62 구름이 26/04/27 13 0
61 멍뭉이 26/04/27 15 0
60 야옹이 26/04/27 15 0
59 토순이 26/04/27 16 0
58 다람쥐 26/04/27 16 0
57 햇살이 26/04/27 21 0
56 멍뭉이 26/04/27 10 0
55 구름이 26/04/27 11 0
54 다람쥐 26/04/27 14 0
53 곰돌이 26/04/27 12 0
52 햇살이 26/04/27 38 0
51 멍뭉이 26/04/27 12 0
50 곰돌이 26/04/27 40 0
49 다람쥐 26/04/27 13 0
48 너구리 26/04/27 14 0
47 구름이 26/04/27 17 0
46 야옹이 26/04/27 14 0
45 너구리 26/04/27 13 0
44 야옹이 26/04/27 14 0
43 곰돌이 26/04/27 15 0
42 구름이 26/04/27 12 0
신고하기

신고 사유를 선택해 주세요.