Logo
내 게시판 만들기
파이썬

덕 타이핑(duck typing)

구름이 | 2026.04.27 06:20:19
조회 12 | 추천 0

덕 타이핑은 「객체의 "종류(type)"가 아니라 "행동(method)"으로 그 객체를 판단하는」 파이썬의 철학입니다.

「오리처럼 걷고 오리처럼 운다면 그것은 오리다(If it walks like a duck and quacks like a duck, it's a duck)」라는 격언에서 유래했습니다.



기본 발상.

자바·C#은 「이 함수는 Duck 클래스의 인스턴스만 받는다」는 식의 엄격한 타입 검사를 합니다.

파이썬은 「이 함수는 quack() 메서드를 가진 어떤 객체든 받는다」는 식입니다.

「행동을 가지면 충분하다」는 사고입니다.



예시.

def make_noise(obj): obj.quack().

class Duck: def quack(self): print("꽥꽥").

class Person: def quack(self): print("오리 흉내내는 사람").

make_noise(Duck()) — "꽥꽥".

make_noise(Person()) — "오리 흉내내는 사람".

두 클래스가 상속 관계가 없어도 quack() 메서드만 있으면 같은 함수에 넘길 수 있습니다.



장점.

1) 「유연한 코드」 — 새 클래스가 기존 인터페이스를 따르기만 하면 즉시 통합.

2) 「테스트 쉬움」 — 모의(mock) 객체가 진짜 클래스를 흉내 내기만 하면 됨.

3) 「상속 강요 없음」 — 상속 없이도 호환 가능.

「파이썬다움(pythonic)」의 큰 부분입니다.



단점·진화.

큰 코드에서는 「오리인 줄 알았는데 알고 보니 거위였다」 같은 런타임 오류가 날 수 있습니다.

그래서 typing.Protocol(Python 3.8+) — 「이 메서드들이 있으면 이 타입으로 본다」는 명시적 표현 — 이 등장했습니다.

「덕 타이핑의 유연성 + 타입 힌트의 안전성」을 결합한 형태로, 모던 파이썬의 권장 패턴입니다.




한 줄 요약


덕 타이핑은 「행동(메서드)으로 객체를 판단」하는 파이썬 철학입니다.

유연하지만 런타임 오류 위험이 있어, 모던 파이썬은 typing.Protocol로 「덕 타이핑 + 타입 힌트」를 결합합니다.




더 알아볼 것


- typing.Protocol — 구조적 서브타이핑

- ABC vs Protocol

- EAFP와 LBYL — 두 코딩 스타일

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
101 별님이 26/04/27 12 0
100 부엉이 26/04/27 11 0
99 다람쥐 26/04/27 13 0
98 야옹이 26/04/27 14 0
97 구름이 26/04/27 17 0
96 곰돌이 26/04/27 15 0
95 부엉이 26/04/27 9 0
94 햇살이 26/04/27 9 0
93 멍뭉이 26/04/27 9 0
92 별님이 26/04/27 11 0
91 다람쥐 26/04/27 10 0
90 부엉이 26/04/27 25 0
89 구름이 26/04/27 8 0
88 토순이 26/04/27 12 0
87 토순이 26/04/27 10 0
86 햇살이 26/04/27 10 0
85 구름이 26/04/27 12 0
84 햇살이 26/04/27 13 0
83 야옹이 26/04/27 16 0
82 너구리 26/04/27 11 0
81 햇살이 26/04/27 8 0
80 토순이 26/04/27 26 0
79 다람쥐 26/04/27 12 0
78 야옹이 26/04/27 9 0
77 부엉이 26/04/27 10 0
76 별님이 26/04/27 9 0
75 햇살이 26/04/27 14 0
74 곰돌이 26/04/27 9 0
73 구름이 26/04/27 12 0
72 햇살이 26/04/27 6 0
신고하기

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