728x90
파이썬은 덕타이핑을 지원하는 언어라는 말을 많이 들어봤는데 덕타이핑이 뭐지??
Duck Typing
- If it walks like a duck and it quacks like a duck, then it must be a duck
해석해보면 "오리처럼 걷고, 오리처럼 꽥꽥거리면 그것은 틀림없이 오리다."라는 뜻이다. 🦆
파이썬에서 덕타이핑을 지원한다는 뜻은 동적 타입의 언어에서 본질적으로 다른 클래스라도 객체의 적합성은 실제 유형이 아니라 특정 메서드와 속성의 존재에 의해 결정된다는 말이다. 🤔
이렇게 들어서는 잘 이해가 되지 않으니 아래의 예시를 보자.
class Duck():
def sound(self):
print('꽥꽥')
class Dog():
def sound(self):
print('멍멍')
class Fish():
def swim(self):
print('헤엄')
def get_sound(animal):
animal.sound()
duck = Duck()
dog = Dog()
fish = Fish()
get_sound(duck) # 꽥꽥
get_sound(dog) # 멍멍
get_sound(fish) # 에러발생! (AttributeError)
클래스 내부에 동일한 메서드가 있는것만으로도 get_sound에서 정상적으로 호출되는 것을 확인할 수 있고, Fish 같은 경우 메서드가 없기 때문에 AttributeError가 발생한다.
즉, 속성과 메서드의 존재에 의해 객체의 적합성이 결정된다.
JAVA에서는 상상도 할수 없는 일인데😨, 언뜻 보면 굉장히 편리해 보이긴 한다. 어떤 사이드 이펙트가 있을지는 조금 더 알아봐야겠다.
참고 : https://yujuwon.tistory.com/entry/%EB%8D%95%ED%83%80%EC%9D%B4%ED%95%91
728x90
'🐍Python | Django' 카테고리의 다른 글
[Python] enumerate() (0) | 2022.05.25 |
---|---|
[Python] Exception 추적 (0) | 2022.05.23 |
[Python] Comprehension? (0) | 2022.05.20 |
[Python] Type Check - type(), isinstance() (0) | 2022.05.18 |
[Python] lstrip(), rstrip(), strip() (0) | 2022.05.17 |