[python] dynamic typing? duck typing?

About_work·2024년 7월 3일
0

python 기초

목록 보기
58/65

동적 타이핑이란?

  • 파이썬은 동적 타이핑(dynamic typing) 언어
  • 이는 변수를 선언할 때 타입을 명시적으로 지정하지 않고, 할당된 값에 따라 타입이 결정되는 것을 의미
  • 예를 들어, 아래 코드를 봅시다:
x = 10        # 정수형 변수
x = "Hello"   # 문자열로 재할당
  • 위 코드에서 x는 처음에 정수형으로 선언되었지만, 이후에 문자열로 재할당되었습니다.
  • 이는 파이썬에서 변수의 타입이 런타임 시점에 결정되기 때문에 가능합니다.

덕 타이핑이란?

  • duck typing객체가 동작을 아래의 요소로 결정하는 프로그래밍 방식
    • 객체의 실제 타입보다는
    • 해당 객체가 어떤 메서드나 속성을 가지는지에 따라 동작을 결정
  • 이는 "만약 어떤 새가 오리처럼 걷고, 오리처럼 소리 내면, 나는 그 새를 오리라고 부르겠다"는 개념에서 비롯된 말입니다.
  • 즉, 객체의 타입보다는 해당 객체가 어떻게 동작하는지가 중요합니다.

파이썬에서 덕 타이핑을 사용하면 다음과 같이 코드가 작성될 수 있습니다:

class Dog:
    def sound(self):
        return "Bark"

class Cat:
    def sound(self):
        return "Meow"

def make_sound(animal):
    return animal.sound()

dog = Dog()
cat = Cat()

print(make_sound(dog))  # 출력: Bark
print(make_sound(cat))  # 출력: Meow
  • 위 코드에서 make_sound 함수는 DogCat 객체가 어떤 타입인지 상관하지 않고, sound 메서드를 가지고 있으면 이를 호출합니다.

동적 타이핑과 덕 타이핑의 장점

  1. 유연성:

    • 동적 타이핑은 변수의 타입을 명시적으로 선언할 필요가 없으므로, 코드를 더 유연하게 작성할 수 있습니다.
    • 이는 프로토타입 단계나 빠르게 개발이 필요한 경우에 유리합니다.
    • 덕 타이핑을 사용하면 객체의 실제 타입에 구애받지 않고, 객체가 가지고 있는 메서드나 속성에 따라 동작을 정의할 수 있습니다.
  2. 간결한 코드:

    • 인터페이스를 명시적으로 선언하지 않아도 되므로, 코드가 더 간결해집니다. 이는 특히 프로토타입이나 초기 개발 단계에서 코드 작성 속도를 높일 수 있습니다.

예시를 통한 이해

다음은 덕 타이핑을 활용한 또 다른 예시입니다:

class Bird:
    def fly(self):
        print("Bird is flying")

class Airplane:
    def fly(self):
        print("Airplane is flying")

def let_it_fly(flying_object):
    flying_object.fly()

bird = Bird()
airplane = Airplane()

let_it_fly(bird)       # 출력: Bird is flying
let_it_fly(airplane)   # 출력: Airplane is flying
  • 위 코드에서 let_it_fly 함수는 fly 메서드를 가지고 있는 객체라면 어떤 객체든 받아들일 수 있습니다. 이는 객체의 타입이 무엇인지 명시할 필요 없이, 해당 객체가 어떤 행동(메서드)을 할 수 있는지에만 집중합니다.

결론

  • 파이썬의 동적 타이핑과 덕 타이핑은 코드의 유연성과 간결성을 높이는 데 중요한 역할
  • 동적 타이핑은 변수의 타입을 런타임에 결정하게 하여 유연하게 사용할 수 있게 하고,
  • 덕 타이핑은 객체의 타입에 의존하지 않고 객체의 동작에 집중하게 하여 간결한 코드를 작성할 수 있게 합니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글