Logo
내 게시판 만들기
파이썬

상속(inheritance) — 부모 클래스의 능력 물려받기

다람쥐 | 2026.04.27 06:20:06
조회 13 | 추천 0

상속(inheritance)은 「한 클래스가 다른 클래스의 속성과 메서드를 자동으로 물려받는」 객체지향의 핵심 개념입니다.

코드 재사용과 계층적 분류를 자연스럽게 해 줍니다.



기본 형식.

class Animal: def __init__(self, name): self.name = name; def speak(self): pass.

class Dog(Animal): def speak(self): print(f"{self.name}: 멍멍!").

class Cat(Animal): def speak(self): print(f"{self.name}: 야옹!").

Dog와 Cat은 Animal의 __init__을 자동으로 물려받아, Animal에 정의된 name 처리를 자기들도 사용합니다.



메서드 오버라이딩(overriding).

부모의 메서드를 자식에서 다시 정의해 동작을 바꿀 수 있습니다.

위 예시의 speak가 Animal에서는 빈 메서드였지만 Dog·Cat에서 각자 다른 동작으로 재정의됐습니다.



super().

부모의 메서드를 명시적으로 호출하고 싶을 때 씁니다.

class Puppy(Dog): def __init__(self, name, age): super().__init__(name); self.age = age; def speak(self): super().speak(); print("(귀여운 목소리)").

super()로 부모의 동작을 그대로 두고 추가 동작만 더하는 패턴이 흔합니다.



상속의 본질은 「is-a 관계」입니다.

Dog is-a Animal, Puppy is-a Dog.

「강아지는 동물이다」가 자연스러우면 상속이 적합.

「has-a 관계」(자동차는 엔진을 가진다)는 상속이 아니라 「합성(composition)」으로 표현합니다 — class Car: def __init__(self): self.engine = Engine().




한 줄 요약


상속은 부모 클래스의 속성·메서드를 자식이 물려받는 것이며, 자식에서 다시 정의(오버라이딩)하거나 super()로 부모를 호출할 수 있습니다.

is-a 관계에 적합합니다.




더 알아볼 것


- 다중 상속과 MRO

- 상속 vs 합성 — 어느 것을 쓸까

- Liskov Substitution Principle

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 10 0
70 곰돌이 26/04/27 12 0
69 구름이 26/04/27 14 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 12 0
66 야옹이 26/04/27 14 0
65 멍뭉이 26/04/27 31 0
64 멍뭉이 26/04/27 13 0
63 부엉이 26/04/27 16 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 14 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 14 0
58 다람쥐 26/04/27 14 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 9 0
55 구름이 26/04/27 9 0
54 다람쥐 26/04/27 13 0
53 곰돌이 26/04/27 11 0
52 햇살이 26/04/27 36 0
51 멍뭉이 26/04/27 11 0
50 곰돌이 26/04/27 37 0
49 다람쥐 26/04/27 12 0
48 너구리 26/04/27 13 0
47 구름이 26/04/27 15 0
46 야옹이 26/04/27 12 0
45 너구리 26/04/27 12 0
44 야옹이 26/04/27 12 0
43 곰돌이 26/04/27 13 0
42 구름이 26/04/27 10 0
신고하기

신고 사유를 선택해 주세요.