파이썬(Python)/문법

파이썬 Class 상속(Inheritance)란? (예제로 알아보기)

끄적끄적아무거나 2021. 6. 30. 09:07
반응형

앞서 포스트에서 python의 Class와 Object에 대해 예제를 통해 이해해 보았다. 해당 내용은 괄호 안에 링크를 통해 확인할 수 있다. (https://scribblinganything.tistory.com/203

 

이번 장에서는 파이썬 클래스의 상속에 대해 알아보겠다.

 


Python Class 상속이란? 

 

상속이란 말 그대로 물려 받는 다는 의미 이다. 다른 클래스의 특성을 물려 받는다고 간단하게 생각할 수 있다. 

상속을 설명하기 위해 두가지 용어를 사용한다. 

 

1. 추상화(abstraction)

2. 상속(inheritance)

 

추상화란 내가 만들 여러개의 Class에서 공통된 성질이 있다면 공통된 성질을 모아서 Class를 만드는 것을 추상화 작업이라고 한다. 상속이란 이렇게 추상화 작업을 통해 만든 Class의 특성을 필요에 따라 가져와서 사용하거나 일부는 변경해서 사용하는 것을 의미 한다. 

 

 


예제를 통해 이해해 보기

 

아래 예제는 가족 멤버들의 수를 입력하면 그 값을 print 하는 코드이다. 

 

코드>>

class family:
    def __init__(self, father, mother, son, daughter):
        self.fa = father
        self.mo = mother
        self.so = son
        self.da = daughter
    def how_many_fam(self):
        print("We have ", self.fa+self.mo+self.so+self.da, " family members" )

class NoofSon(family):
    def how_many_son(self):
        print("We have ", self.so, " sons" )

class NoofDaughter(family):
    def how_many_fam(self):
        print("We have ", self.da, " daughters" )

A_family = NoofSon(1,1,3,2)
A_family.how_many_fam()
A_family.how_many_son()
print("##########")
B_family = NoofDaughter(1,1,3,2)
B_family.how_many_fam()

 

결과>>

We have  7  family members
We have  3  sons
##########
We have  2  daughters

 

주석>>

class family 에서 공통으로 사용할 특성들을 모았다. 이 과정이 추상화 과정이다. 

 

A_family로 NoofSon 클래스를 사용한 객체를 만들고 how_many_fam을 통해 family 클래스의 함수를 사용함을 확인할 수 있다.

 

B_family는 NoofDaughter 클래스를 사용하여 객체를 만들었다. 그리고 how_many_fam에 덮어써서(overwirte) 해서 상속 받은 함수 값을 변경하였다. 

 

이처럼 상속 받은 특성은 그냥 사용도되고 마음대로 변경도 가능하다.

 

반응형