반응형

동적 타이핑의 한 종류로 객체의 변수 및 메소드의 집합이 객체의 타입을 결정하는 것을 말한다.

여기서 동적 타이핑이란, 자료형 검사가 컴파일이 아닌 런타임에 수행될 경우를 말한다. 파이썬과 같은 언어는 인터프리터 언어로 런타임때 자료형 검사가 진행된다.

클래스 상속이나 인터페이스 구현으로 타입을 구분하는 대신, 덕 타이핑은 객체가 어떤 타입에 걸맞은 변수와 메소드를 지니면 객체를 해당 타입에 속하는 것으로 간주한다. 비유를 하자면 아래와 같다.

만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다.

즉, 객체의 타입을 구분할 때 이건 어떤 객체이기 때문에 무슨무슨 특징을 갖는다. 라고 하는 것 보다. 이 객체는 어떤 어떤 특징을 가졌기 때문에 어떤 객체이다. 라고 표현하는 것이 내 이해의 상한선이다...

농담을 섞자면 난 ESTJ이기 때문에 꼰대다 보다는 꼰대이니까 ESTJ랄까?

예제를 한 번 보자.

def calculate(a, b, c):
    return (a+b)*c

a = calculate(1, 2, 3)
b = calculate([1,2,3],[4,5,6],2)
c = calculate("a","b",3)

print(a)
print(b)
print(c)
9
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
ababab

이것이 바로 런타임에 자료형이 결정되는 덕타이핑이라는 것이다.

반응형

+ Recent posts