2019년 11월 11일 월요일

파이썬 : Class의 상속



오늘은 class의 상속에 대해서 간단하게 알아보겠다.

우선 아래의 기본 클래스를 보자.
Zoo에서 기본 roar 메서드를 호출하면 'Grrrr..'가 나오게 설정하였다.


  1. class Zoo :
  2.     def roar(self):
  3.         print('Grrrr..')
  4.  
  5. Lotte = Zoo()
  6. Lotte.roar()
Grrrr..



자, 이제 여기에 Monkey와 Dolphin class를 상속시킬거다
Monkey는 'Kikiki!!'라고 울고
Dolphin은 조용하다

class Zoo :
    def roar(self):
        print('Grrrr..')

class Monkey(Zoo):
    def roar(self):
        print('Kikikiki!!')

class Dolphin(Zoo):
    def roar(self):
        print('......?')

Lotte = Zoo()
Lotte.roar()
Grrrr..
Kikikiki!!
......?

Tom = Monkey()
Tom.roar()

Jin = Dolphin()
Jin.roar()


Grrrr..
Kikikiki!!
......?


보다시피 상속받은 클래스안에 동일한 roar라는 메서드가 있어도
각각의 객체는 하위 클래스의 메서드를 출력한다.


자, 그렇다면 다중상속 클래스에서 같은 roar를 호출한다면
어떤 값이 호출될까?

Python에서는 첫번째 클래스의 메서드가 호출된다.

아래 코드를 보자.


class Zoo :
    def roar(self):
        print('Grrrr..')
 
class Monkey(Zoo):
    def roar(self):
        print('Kikikiki!!')
 
class Dolphin(Zoo):
    def roar(self):
        print('......?')
 
class nothing(Monkey, Dolphin):
    pass
 
Lotte = Zoo()
Lotte.roar()
 
Tom = Monkey()
Tom.roar()
 
Jin = Dolphin()
Jin.roar()
 
Ghost = nothing()
Ghost.roar()
Grrrr..
Kikikiki!!
......?
Kikikiki!!


Ghost는 Kikiki!!하고 울었다.
즉, Monkey의 roar가 호출된 것이다.

이유는 Monkey가 Dolphin보다 앞에 들어갔기 때문이다.

댓글 없음:

댓글 쓰기