Soft Ware/python
super() 의 기능 및 역할
달려가보자
2012. 3. 14. 20:44
혹시 C++에서 다중 상속시 문제 점 아시나요?
다중 상속시 부모 클래스가 다른 부모클래스를 상속받았고
또 다른 부모 클래스가 위와 똑같은 부모 클래스를 상속받으면 어떤일 이 일어 날까요?
그럼 제일 위에 있는 부모 클래스는 2번 호출 하게 될거인다 .
위의 경우 A의 생성자는 두번 실행 될것이다 . 이를 막기 위해 파이썬에서는 super() 라는 함수를 쓴다 .
# -*- coding: utf-8 -*-
class Animal:
def __init__(self):
print("Animal __init()")
class Tiger(Animal):
def __init__(self):
super().__init__()
print("Tiger __init__()")
class Lion(Animal):
def __init__(self):
super().__init__() # 부모 클래스의 생성자 메소드 호출
print("Lion __init__()")
class Liger(Tiger, Lion):
def __init__(self):
super().__init__() # 부모 클래스의 생성자 메소드 호출
print("Liger __init__()")
l = Liger();
위의 코드 실행 결과를 보면 알수 있다 .
결과문 :
Animal __init()
Lion __init__()
Tiger __init__()
Liger __init__()