--- id: [[P-Reinforce]]-AUTO-5164C3 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 덕 타이핑(Duck Typing)" --- # [[덕 타이핑(Duck Typing)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 덕 타이핑(Duck Typing)은 객체의 μ‹€μ œ ν˜•νƒœλ‚˜ ꡬ쑰에 κΈ°λ°˜ν•˜μ—¬ νƒ€μž…μ„ κ²°μ •ν•˜λŠ” 방식을 μ˜λ―Έν•©λ‹ˆλ‹€ [1-3]. "λ§Œμ•½ μ–΄λ–€ 것이 였리처럼 κ±·κ³  였리처럼 갉갉거리면 그것은 μ˜€λ¦¬λ‹€"λΌλŠ” κ°œλ…μ— 바탕을 λ‘‘λ‹ˆλ‹€ [1, 3]. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 핡심적인 νƒ€μž… μ‹œμŠ€ν…œ νŠΉμ§•μœΌλ‘œ, λͺ…μ‹œμ μΈ νƒ€μž… μ΄λ¦„μ˜ μ„ μ–Έ 없이도 멀버(속성과 λ©”μ„œλ“œ)의 ν˜•νƒœκ°€ μΌμΉ˜ν•˜λ©΄ ν˜Έν™˜μ„±μ„ μΈμ •ν•˜λŠ” ꡬ쑰적 타이핑([[Structural Typing]])κ³Ό λ™μΌν•œ 의미둜 λΆˆλ¦½λ‹ˆλ‹€ [1-3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **κΈ°λ³Έ 원리 및 ν˜Έν™˜μ„±:** 덕 타이핑(λ˜λŠ” ꡬ쑰적 μ„œλΈŒνƒ€μ΄ν•‘) μ²΄κ³„μ—μ„œλŠ” κ°’μ΄λ‚˜ 객체가 κ°€μ§„ ν˜•νƒœ(Shape)에 μ΄ˆμ μ„ λ§žμΆ”μ–΄ νƒ€μž…μ„ κ²€μ‚¬ν•©λ‹ˆλ‹€ [2]. κΈ°λ³Έ κ·œμΉ™μ— λ”°λ₯΄λ©΄, 객체 `x`κ°€ νƒ€κ²Ÿ νƒ€μž… `y`κ°€ κ°€μ§„ 멀버λ₯Ό μ΅œμ†Œν•œ λ™μΌν•˜κ²Œ λͺ¨λ‘ ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄ `x`λŠ” `y`와 ν˜Έν™˜λ˜λŠ” κ²ƒμœΌλ‘œ κ°„μ£Όλ©λ‹ˆλ‹€ [1]. 즉, ν• λ‹Ήλ˜λŠ” 값이 νƒ€κ²Ÿ νƒ€μž…μ˜ μš”κ΅¬ 속성을 λͺ¨λ‘ κ°–μΆ”κ³  있기만 ν•˜λ©΄ 정상적인 νƒ€μž…μœΌλ‘œ μ·¨κΈ‰λ©λ‹ˆλ‹€ [1]. * **μžλ°”μŠ€ν¬λ¦½νŠΈ μƒνƒœκ³„μ˜ νŠΉμ„±κ³Ό ν•œκ³„:** μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 덕 타이핑 λ©”μ»€λ‹ˆμ¦˜μ„ λ”°λ₯΄κΈ° λ•Œλ¬Έμ—, λ‹¨μˆœνžˆ 객체의 속성 μ„ΈνŠΈλ₯Ό λ³΅μ œν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ 거의 λͺ¨λ“  객체λ₯Ό 흉내 λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. μ΄λŸ¬ν•œ μœ μ—°ν•œ νŠΉμ„±μœΌλ‘œ 인해, μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” ꡬ별 κ°€λŠ₯ν•œ νƒ€μž… 별칭(비ꡬ쑰적 λ˜λŠ” λͺ…λͺ©μ  타이핑, Nominal Typing)을 λ„€μ΄ν‹°λΈŒν•˜κ²Œ 생성할 수 μžˆλŠ” 방법을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” ν•œκ³„κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€ [4]. * **ν•œκ³„ 극볡을 μœ„ν•œ νŒ¨ν„΄:** 덕 타이핑 ν™˜κ²½μ—μ„œλŠ” 속성 ꡬ쑰가 κ°™μ§€λ§Œ 논리적/의미적으둜 λ‹€λ₯Έ 데이터(예: ꡬ쑰가 λ™μΌν•œ 두 개의 λ‹€λ₯Έ 토큰 λ˜λŠ” μ‹λ³„μž)λ₯Ό νƒ€μž… μ‹œμŠ€ν…œ μƒμ—μ„œ μ›μ²œμ μœΌλ‘œ κ΅¬λ³„ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€ [4]. 이λ₯Ό κ·Ήλ³΅ν•˜μ—¬ μ•ˆμ •μ„±μ„ ν™•λ³΄ν•˜κΈ° μœ„ν•΄, κ°œλ°œμžλ“€μ€ '였파크 νƒ€μž…(Opaque Types)'μ΄λ‚˜ 'λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)'κ³Ό 같은 기법을 ν™œμš©ν•˜μ—¬ νƒ€μž… μ‹œμŠ€ν…œ λ‚΄μ—μ„œλ§Œ λ™μž‘ν•˜λŠ” κ΅¬λ³„μžλ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€ [4]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[ꡬ쑰적 타이핑(Structural Typing)]], [[λͺ…λͺ©μ  타이핑(Nominal Typing)]], 였파크 νƒ€μž…(Opaque Types) - **Projects/Contexts:** νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) νƒ€μž… μ‹œμŠ€ν…œ 및 ν˜Έν™˜μ„± 평가 - **Contradictions/Notes:** 덕 타이핑은 높은 μ½”λ“œ μœ μ—°μ„±μ„ μ œκ³΅ν•˜μ§€λ§Œ, 그둜 인해 ꡬ쑰가 같은 λ‹€λ₯Έ 의미의 데이터λ₯Ό μ›μ²œμ μœΌλ‘œ κ΅¬λ³„ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 였파크 νƒ€μž…(Opaque Types) λ“±μ˜ 별도 기법이 μš”κ΅¬λ©λ‹ˆλ‹€ [4]. --- *Last updated: 2026-04-18* ---