λ νμ΄ν(Duck Typing)
λ§μ½ μ΄λ€ μκ° μ€λ¦¬μ²λΌ κ±·κ³ , ν€μμΉκ³ , κ½₯κ½₯거리λ μ리λ₯Ό λΈλ€λ©΄ λλ κ·Έ μλ₯Ό μ€λ¦¬λΌκ³ λΆλ₯Ό κ²μ΄λ€.
- μ¬λμ΄ μ€λ¦¬μ²λΌ νλνλ©΄ μ€λ¦¬λ‘ λ΄λ 무방νλ€λΌλκ² λ νμ΄ν(Duck Typing)μ΄λ€.
- νμ μ 미리 μ νλκ² μλλΌ μ€νμ΄ λμμ λ ν΄λΉ Methodλ€μ νμΈνμ¬ νμ μ μ νλ€.
- μ₯μ
- νμ μ λν΄ λ§€μ° μμ λ‘λ€.
- λ°νμ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ ν κΈ°λ₯κ³Ό μλ£νμ μ°½μΆνλ κ²
- λ¨μ
- λ°νμ μλ£ν μ€λ₯κ° λ°μν μ μλ€ λ°νμμμ, κ°μ μμμΉ λͺ»ν μ νμ΄ μμ μ μκ³ , κ·Έ μλ£νμ λν 무μλ―Έν μμ μ΄ μ μ©λλ€.
- μ΄λ° μ€λ₯κ° νλ‘κ·Έλλ° μ€μ ꡬ문μμ μ€λ μκ° νμ λ°μν μ μλ€
- λ°μ΄ν°μ μλͺ»λ μλ£νμ μ₯μλ‘ μ λ¬λλ ꡬ문μ μμ±νμ§ μμμΌ νλ€. μ΄κ²μ λ²κ·Έλ₯Ό μ°ΎκΈ° μ΄λ €μΈ μλ μλ€.
Example Code
class Parrot:
def fly(self):
print("Parrot flying")
class Airplane:
def fly(self):
print("Airplane flying")
class Whale:
def swim(self):
print("Whale swimming")
def lift_off(entity):
entity.fly()
parrot = Parrot()
airplane = Airplane()
whale = Whale()
lift_off(parrot) # prints `Parrot flying`
lift_off(airplane) # prints `Airplane flying`
lift_off(whale) # Throws the error `'Whale' object has no attribute 'fly'`
μ¬λ‘
- μ€λͺ°ν ν¬, 루λΉ, νμ΄μ¬μμ λ νμ΄νμ λ§€μ° λ§μ΄ μ°μ΄κ³ μλ€.
κ²°λ‘
- λμ μΌλ‘ μ νλ μΈμ΄μ κ°λ°μ μμ£Ό
λ¨μ ν μ€νΈ
μ κ°μ νλ‘κ·Έλλ° μ μ± μ μν΄ μ§μλλ€. - ν μ€νΈλ μ λ¬Έ μννΈμ¨μ΄ κ°λ°μμ ν΅μ¬ λ°©λ²μ΄κ³ , λμ μΌλ‘ μ νλ μΈμ΄μ κ²½μ°μ νΉν μ€μνλ€.
- μ€μ λ‘, μ¬λ°λ₯Έ νλ‘κ·Έλ¨μ΄ μλμ 보μ₯νκΈ° μν΄ νλ ν μ€νΈλ μ μ μλ£ν κ²μ¬λ³΄λ€ ν¨μ¬ λμ μ€λ₯ λ²μλ₯Ό κ°μ§ν μ μμ§λ§, λ°λλ‘ μ μ μλ£ν κ²μ¬κ° κ°μ§ν μ μλ μ€λ₯λ₯Ό μ’ ν©μ μΌλ‘ κ²μν μ μλ€.