13. [파이썬] 상속과 νƒ€μž… 확인

2026. 3. 8. 11:12Β·Python & SQL/Python Basics
πŸ’‘ λ³Έ ν¬μŠ€νŒ…μ€ μˆ˜μ—… λ‚΄μš©, ꡐ재, ChatGPTλ₯Ό μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ ν•™μŠ΅ κΈ°λ‘μž…λ‹ˆλ‹€.
κΈ€κ³Ό κ·Έλ¦Ό λ“± λͺ¨λ“  μ½˜ν…μΈ μ˜ μ •리 λ° μž‘성은 λ³Έ λΈ”λ‘œκ·Έμ—μ„œ μ§μ ‘ μ œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

 

Python κΈ°μ΄ˆλΆ€ν„° Streamlit λ°μ΄ν„° μ‹œκ°ν™”κΉŒμ§€ μ •λ¦¬ν•˜λŠ” ν•™μŠ΅ κΈ°λ‘μž…λ‹ˆλ‹€.

이 글은 '13. [파이썬] 상속과 νƒ€μž… 확인' μž…λ‹ˆλ‹€.

 


객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” μ΄λ―Έ λ§Œλ“€μ–΄μ§„ ν΄λž˜μŠ€λ₯Ό κΈ°λ°˜μœΌλ‘œ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ₯Ό λ§Œλ“€ μˆ˜ μžˆλ‹€.

μ΄λ•Œ μ‚¬μš©ν•˜λŠ” κ°œλ…μ΄ μƒμ†(Inheritance) μ΄λ‹€.

 

상속을 μ‚¬μš©ν•˜λ©΄ κΈ°μ‘΄ ν΄λž˜μŠ€μ˜ μ†μ„±κ³Ό λ©”μ„œλ“œλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  μˆ˜ μžˆμœΌλ©°, ν•„μš”ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν•  μˆ˜ μžˆλ‹€.

 

이번 κΈ€μ—μ„œλŠ” Pythonμ—μ„œ 클래슀 μƒμ†μ˜ κΈ°λ³Έ κ°œλ…κ³Ό μ‚¬μš© 방법, 그리고 객체의 νƒ€μž…μ„ 확인할 λ•Œ μ‚¬μš©ν•˜λŠ” isinstance() ν•¨μˆ˜λ₯Ό ν•¨κ»˜ 정리해본닀.

 


상속(Inheritance)

상속은 κΈ°μ‘΄ ν΄λž˜μŠ€λ₯Ό κΈ°λ°˜μœΌλ‘œ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ₯Ό λ§Œλ“œλŠ” λ°©λ²•이닀.

  • κΈ°μ‘΄ ν΄λž˜μŠ€ → λΆ€λͺ¨ ν΄λž˜μŠ€(Parent / Super Class)
  • μƒˆλ‘œ λ§Œλ“œλŠ” ν΄λž˜μŠ€ → μžμ‹ ν΄λž˜μŠ€(Child / Sub Class)

상속을 μ‚¬μš©ν•˜λ©΄ λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ μ†μ„±κ³Ό λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  μˆ˜ μžˆλ‹€.

 

예λ₯Ό λ“€μ–΄ λ‹€μŒκ³Ό κ°™μ€ ν΄λž˜μŠ€λ₯Ό μƒκ°ν•΄λ³Ό μˆ˜ μžˆλ‹€.

class Animal:

    def __init__(self, name):
        self.name = name

    def speak(self):
        print("μ†Œλ¦¬λ₯Ό λƒ…λ‹ˆλ‹€.")

 

이제 Animal 클래슀λ₯Ό μƒμ†λ°›λŠ” μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“€μ–΄λ³΄μž.

class Dog(Animal):

    def bark(self):
        print("멍멍!")

 

객체λ₯Ό μƒμ„±ν•˜λ©΄ λΆ€λͺ¨ 클래슀의 κΈ°λŠ₯도 μ‚¬μš©ν•  수 μžˆλ‹€.

dog = Dog("Buddy")

print(dog.name)
dog.speak()
dog.bark()

 

즉, Dog ν΄λž˜μŠ€λŠ” Animal ν΄λž˜μŠ€μ˜ κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ λ¬Όλ €λ°›λŠ”λ‹€.

 


λ©”μ„œλ“œ μ˜€λ²„라이딩

μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•  μˆ˜λ„ μžˆλ‹€.

이것을 λ©”μ„œλ“œ μ˜€λ²„라이딩(Method Overriding) μ΄λΌκ³  ν•œλ‹€.

 

예λ₯Ό λ“€μ–΄ Animal ν΄λž˜μŠ€μ˜ speak() λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ‹€μ‹œ μ •μ˜ν•  μˆ˜ μžˆλ‹€.

class Dog(Animal):

    def speak(self):
        print("멍멍!")

 

이제 κ°μ²΄λ₯Ό ν˜ΈμΆœν•˜λ©΄ μžμ‹ ν΄λž˜μŠ€μ˜ λ©”μ„œλ“œκ°€ μ‹€ν–‰λœλ‹€.

dog = Dog("Buddy")
dog.speak()

 

μ‹€ν–‰ κ²°κ³Ό

멍멍!

 

이처럼 상속을 μ‚¬μš©ν•˜λ©΄ κΈ°μ‘΄ 클래슀λ₯Ό 기반으둜 κΈ°λŠ₯을 ν™•μž₯ν•˜κ±°λ‚˜ λ³€κ²½ν•  수 μžˆλ‹€.

 

 

super()

μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•ŒλŠ” super()λ₯Ό μ‚¬μš©ν•  μˆ˜ μžˆλ‹€.

예λ₯Ό λ“€μ–΄ λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

class Dog(Animal):

    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed

 

객체λ₯Ό μƒμ„±ν•˜λ©΄ λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ μ΄ˆκΈ°ν™” μ½”λ“œλ„ ν•¨κ»˜ μ‹€ν–‰λœλ‹€.

dog = Dog("Buddy", "Labrador")

print(dog.name)
print(dog.breed)

super()λ₯Ό μ‚¬μš©ν•˜λ©΄ λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ κΈ°λŠ₯을 μœ μ§€ν•˜λ©΄μ„œ μžμ‹ ν΄λž˜μŠ€μ˜ κΈ°λŠ₯을 μΆ”κ°€ν•  μˆ˜ μžˆλ‹€.

 

 

νƒ€μž… ν™•인

객체가 νŠΉμ • ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μΈμ§€ ν™•인할 λ•ŒλŠ” isinstance() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  μˆ˜ μžˆλ‹€.

dog = Dog("Buddy", "Labrador")

print(isinstance(dog, Dog))
print(isinstance(dog, Animal))

 

μ‹€ν–‰ κ²°κ³Ό

True
True

dog κ°μ²΄λŠ” Dog ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μ΄λ©΄μ„œ λ™μ‹œμ— Animal ν΄λž˜μŠ€λ₯Ό μƒμ†λ°›μ•˜κΈ° λ•Œλ¬Έμ— Animal νƒ€μž…μœΌλ‘œλ„ μΈμ‹λœλ‹€.

즉, isinstance()λŠ” μƒμ† κ΄€κ³„κΉŒμ§€ κ³ λ €ν•˜μ—¬ νƒ€μž…을 ν™•μΈν•œλ‹€.

 

 

상속 ꡬ쑰 μ˜ˆμ‹œ

dog κ°μ²΄λŠ” Dog ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μ΄λ©΄μ„œ λ™μ‹œμ— Animal ν΄λž˜μŠ€λ₯Ό μƒμ†λ°›μ•˜κΈ° λ•Œλ¬Έμ— Animal νƒ€μž…μœΌλ‘œλ„ μΈμ‹λœλ‹€.

즉, isinstance()λŠ” μƒμ† κ΄€κ³„κΉŒμ§€ κ³ λ €ν•˜μ—¬ νƒ€μž…을 ν™•μΈν•œλ‹€.

Animal
β”œβ”€ Dog
└─ Cat

 

μ½”λ“œλ‘œ ν‘œν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

class Cat(Animal):

    def speak(self):
        print("μ•Όμ˜Ή")

μ΄λ ‡κ²Œ ν•˜λ©΄ Dog, Cat λͺ¨λ‘ Animal ν΄λž˜μŠ€μ˜ κΈ°λŠ₯을 κ³΅μœ ν•˜κ²Œ λœλ‹€.

 

 

정리

상속은 κΈ°μ‘΄ ν΄λž˜μŠ€λ₯Ό κΈ°λ°˜μœΌλ‘œ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ₯Ό λ§Œλ“œλŠ” κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ ν•΅μ‹¬ κ°œλ…μ΄λ‹€.

 

Pythonμ—μ„œ μƒμ†μ„ μ‚¬μš©ν•˜λ©΄

  • λΆ€λͺ¨ ν΄λž˜μŠ€μ˜ μ†μ„±κ³Ό λ©”μ„œλ“œλ₯Ό μž¬μ‚¬μš©ν•  μˆ˜ μžˆκ³ 
  • μžμ‹ ν΄λž˜μŠ€μ—μ„œ κΈ°λŠ₯을 ν™•μž₯ν•˜κ±°λ‚˜ μˆ˜μ •ν•  μˆ˜ μžˆλ‹€.

λ˜ν•œ isinstance() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ κ°μ²΄κ°€ νŠΉμ • ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μΈμ§€, λ˜λŠ” μƒμ† κ΄€κ³„에 μžˆλŠ”μ§€ ν™•인할 μˆ˜ μžˆλ‹€.

상속을 ν™œμš©ν•˜λ©΄ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±κ³Ό κ΅¬μ‘°μ μΈ μ„€κ³„κ°€ κ°€λŠ₯ν•΄μ§€λ©°, κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž¨μ„ λ”μš± νš¨μœ¨μ μœΌλ‘œ κ΅¬μ„±ν•  μˆ˜ μžˆλ‹€.

 

λ‹€μŒ κΈ€μ—μ„œλŠ” κ°μ²΄μ˜ λ™μž‘을 ν™•μž₯ν•˜λŠ” λ°©λ²•인 μŠ€νŽ˜μ…œ λ©”μ†Œλ“œμ™€ μ—°μ‚°μž μ˜€λ²„λ‘œλ”©μ„ μ‚΄νŽ΄λ³Έλ‹€.

 

 

'Python & SQL > Python Basics' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

15. [파이썬] 정보은닉과 클래슀 λ‚΄λΆ€ ꡬ쑰  (2) 2026.03.08
14. [파이썬] μŠ€νŽ˜μ…œ λ©”μ†Œλ“œμ™€ μ—°μ‚°μž μ˜€λ²„λ‘œλ”©  (2) 2026.03.08
12. [파이썬] ν΄λž˜μŠ€μ™€ 객체  (0) 2026.03.08
11. [파이썬] Python λ©”λͺ¨λ¦¬ 관리  (0) 2026.03.08
10. [파이썬] mutable vs immutable  (0) 2026.03.07
'Python & SQL/Python Basics' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • 15. [파이썬] 정보은닉과 클래슀 λ‚΄λΆ€ ꡬ쑰
  • 14. [파이썬] μŠ€νŽ˜μ…œ λ©”μ†Œλ“œμ™€ μ—°μ‚°μž μ˜€λ²„λ‘œλ”©
  • 12. [파이썬] ν΄λž˜μŠ€μ™€ 객체
  • 11. [파이썬] Python λ©”λͺ¨λ¦¬ 관리
J. Son
J. Son
Petit à petit l'oiseau fait son nid.
  • J. Son
    Steady Study Log
    J. Son
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (172) N
      • Python & SQL (63)
        • Python Basics (21)
        • Python Problems (23)
        • Python Practice (11)
        • MySQL (1)
        • Git & GitHub (7)
      • ML & DL (7) N
      • Projects (6) N
        • Project Portfolio (6) N
      • AI Camp (4)
        • Camp Reflection (4)
      • Concept Notes (6)
        • Statistics & Stata (4)
        • Mathematics (2)
      • Archive (85) N
        • Java (24)
        • R (1)
        • Languages (49)
        • Miscellaneous (11) N
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • λ°©λͺ…둝
  • 링크

    • GitHub
    • WikiDocs
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    machine learning
    streamlit
    파이썬 문제
    share.streamlit.io
    Github
    Le Petit Prince
    μ–΄λ¦°μ™•μž ν”„λž‘μŠ€μ–΄
    파이썬 streamlit
    λ¨Έμ‹ λŸ¬λ‹
    μ ν”„νˆ¬νŒŒμ΄μ¬ μ—°μŠ΅λ¬Έμ œ
    파이썬 크둀링
    객체
    python streamlit
    Stata
    MySQL
    Python
    볡합과거
    ν”„λ‘œμ νŠΈ 였일러
    python problem
    μžλ°”
    초보자λ₯Ό μœ„ν•œ 파이썬 300제
    λΆˆμ–΄ 곡뢀
    μ–΄λ¦°μ™•μž λΆˆμ–΄
    파이썬
    μ ν”„νˆ¬νŒŒμ΄μ¬ μ—°μŠ΅λ¬Έμ œ 풀이
    GIT
    λ§₯ git
    λΆˆμ–΄ κ΄€κ³„λŒ€λͺ…사
    ν”„λž‘μŠ€μ–΄ 곡뢀
    passe compose
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
J. Son
13. [파이썬] 상속과 νƒ€μž… 확인
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”