혹시 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__()
'Soft Ware > python' 카테고리의 다른 글
프레임 배경 바꾸는 방법 !!! (0) | 2012.04.12 |
---|---|
Tkinter 에 기능 사용하기 ~~ (0) | 2012.04.09 |
연산자 중복 ~~~ (0) | 2012.03.13 |
class 중 정적메소드로 등록 및 클래스메소드로 등록 하는방법 (0) | 2012.03.12 |
class 의 인스턴스와 클래스 간의 이해(2) (0) | 2012.03.12 |