본문 바로가기

파이썬 프로그래밍/파이썬 기초

[Python] 파이썬 클래스의 상속 기초 개념잡기

개념

상속(Inheritance)
- 클래스를 부모와 자식으로 나눈 후 부모클래스의 내용을 자식이 가져다 쓸 수 있는 것을 말합니다.
- 상속을 해주는 클래스가 부모
- 상속을 받는 클래스가 자식
   입니다.



실습

코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Family():
    def father(self):
        print("아빠")
 
    def mother(self):
        print("엄마")
 
    def son(self):
        print("아들")
 
class Face():
    def handsome(self):
        print("잘생겼다")
 
    def pretty(self):
        print("이쁘다")
 
    def fat(self):
        print("뚱뚱하다")
 
we = Family() #Family클래스를 we에 인스턴스 생성
we.father()
we.mother()
we.son()
 
depiction = Face() #Face클래스를 depiction에 인스턴스 생성
depiction.handsome()
depiction.pretty()
depiction.fat()
cs
Class 2개를 생성합니다. (Family, Face)
그리고 각각의 함수(def)를 생성합니다.
자신의 값을 가지도록 인스턴스들을 생성해줍니다.


실행

값들이 잘 축력되죠?



여기서 상속을 사용해야하는 이유

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Family():
    def father(self):
        print("아빠")
 
    def mother(self):
        print("엄마")
 
    def son(self):
        print("아들")
 
class Face():
    def handsome(self):
        print("잘생겼다")
 
    def pretty(self):
        print("이쁘다")
 
    def fat(self):
        print("뚱뚱하다")
 
we = Family() #Family클래스를 we에 인스턴스 생성
we.father()
we.mother()
we.son()
 
depiction = Face() #Face클래스를 depiction에 인스턴스 생성
depiction.handsome()
depiction.pretty()
depiction.fat()
cs

코드를 다시 봅시다.

Family, Face 클래스가 두개 있는데 이 두개는 공간을 차지하죠?

그럼 이 두개의 공통점을 모아 우리는 Introduce(소개)로 묶을 수 있습니다.

우리는 이 두개의 클래스를 특징대로 묶어 사용을 해볼것입니다.

그렇게 된다면 불필요한 코드를 낭비하는 경우가 줄어들겠죠?



그럼 그대로 상속받아 보겠습니다

1. 상속시켜줄 부모클래스 생성(introduce)

2. 부모클래스에 상속해줄 매소드 추가

3. 부모가 가지고 있는 매소드가 자식이 가지고 있다면 불필요하므로 삭제

4. 자식클래스()안에 부모클래스를 넣어주면 해당 부모클래스에게 상속받겠다는 뜻


코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class introduce(): #부모 클래스
    def father(self):
        print("아빠")
 
    def handsome(self):
        print("잘생겼다")
 
class Family(introduce): #자식클래스(부모클래스) 부모매소드를 상속받겠다
    def mother(self):
        print("엄마")
 
    def son(self):
        print("아들")
 
class Face(introduce): #자식클래스(부모클래스) 부모매소드를 상속받겠다
    def pretty(self):
        print("이쁘다")
 
    def fat(self):
        print("뚱뚱하다")
 
we = Family() #Family클래스를 we에 인스턴스 생성
we.father()
we.mother()
we.son()
 
depiction = Face() #Face클래스를 depiction에 인스턴스 생성
depiction.handsome()
depiction.pretty()
depiction.fat()
cs


실행
자식에겐 아빠, 잘생겼다 매소드가 없었지만 부모에게 상속받아 정상적으로 출력되는 모습을 확인하실 수 있습니다.