[Python] 6. 다중 상속 및 이름 충돌

2021. 10. 26. 21:29Python/구조 공부하기

728x90
반응형
다중 상속 : 2개 이상의 클래스를 동시에 상속 받는 것을 의미
# 다중 상속 테스트
class Tiger:
	def Jump(self):
    	print("호랑이 Jump")

class Lion:
	def Bite(self):
    	print("사자 Bite")
        
class Liger(self):
	def Play(self):
    	print("라이거 Play")

if __name__ == "__main__":
	adultLiger = Liger()
    # 2개의 클래스로부터 상속받은 메소드 사용 시 오류 발생 X
    adultLiger.Play()
    adultLiger.Bite()
    adultLiger.Jump()
# 다중 상속의 경우, 이름 충돌이 발생하는 경우 테스트
class Tiger:
	def Jump(self):
    	print("호랑이 Jump")
    
    def cry(self):
    	print("호랑이 Cry")

class Lion:
	def Bite(self):
    	print("사자 Bite")
        
    def Cry(self):
    	print("사자 Cry")
        
class Liger(Tiger, Lion):
	def Play(self):
    	print("라이거 Play")

if __name__ == "__main__":
	adultLiger = Liger()
    # 아래의 cry() 메소드 호출 시, 상속 받을 때 먼저 상속 받은 클래스의 cry() 메소드가 호출됨
    # Liger 클래스의 정의부분 참고
    # 여기에선 Tiger 클래스를 먼저 상속 받았으므로, 코드를 실행하면 '호랑이 Cry'가 출력됨
    adultLiger.Cry()