-
덕 타이핑Python/이것저것 파이썬 2021. 5. 16. 08:48반응형
Duck Typing - 'If it walks like a duck and it quacks like a duck, then it must be a duck'
'오리처럼 걷고, 오리처럼 꽥꽥거리면, 그것은 오리임이 틀림없다.'간단하게 코드를 만들어 봤습니다.
Bird와 Cat는 전혀 다른 클래스입니다.
하지만 같은 메서드명을 가지고 있기 때문에
who_sing 함수에서 두 클래스의 메서드를 모두 사용할 수 있습니다.파이썬에서는,
전혀 다른 클래스지만
같은 이름의 속성이나 메서드가 있다면,
특별한 구분 없이 쓸 수 있음을 알 수 있죠.어떤 객체가 어떤 타입에 걸맞은 속성(변수)과 메서드(함수)를 가지면,
그 객체는 해당 타입에 속하는 것으로 간주하는 것을
덕 타이핑이라고 합니다.class Bird: def __init__(self, name, sing): self.name = name self.sing = sing def who(self): return self.name def sings(self): return self.sing class Cat: def __init__(self, sing): self.sing = sing def who(self): return 'cat' def sings(self): return self.sing duck = Bird('오리', '꽥꽥') print(duck.who(), ':', duck.sings()) # 오리 : 꽥꽥 cat = Cat('야옹') print(cat.who(), ':', cat.sings()) # cat : 야옹 def who_sings(obj): print(obj.who(), ':', obj.sings()) who_sings(duck) # 오리 : 꽥꽥 who_sings(cat) # cat : 야옹 def sings(obj): print(obj.sing) sings(duck) # 꽥꽥 sings(cat) # 야옹
반응형