ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 덕 타이핑
    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)  # 야옹
    

     

    반응형
Designed by Tistory.