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__()