IT/프로그래밍/Python
Python 두가지 상속 방법의 차이점
third9
2015. 6. 20. 07:01
python에서 상속의 경우 두가지 방법이 존재한다.
- 첫번째 방법 :
super method
를 이용한 방법
class ChildA(parent) :
super(ChildA, self).__init__(args)
- 두번째 방법 :
parent
를 이용한 방법
class ChildB(parent) :
parent.__init__(self, args)
이렇게 두가지의 방법이 있다.
인터넷을 찾아보니 이미 나와같은 궁금증을 올린 사람들이 있다. [링크]
더 찾아보니 한글로도 있다. [http://techbard.tistory.com/2930]
내용들을 다 참조해서 보았을때 ChildA
의 상속방식의 경우 부모의 __init__
메소드를 직접 참조하였기에
parent 클래스가 수정될 경우 해당클래스를 상속받는 모든 클래스들을 수정해 줘야 하고,
ChildB
처럼 super()
를 이용하여 상속처리를 할경우 parent 클래스가 수정되어도 상속 받는
부모클래스만 수정을 하면 될뿐 다른부분들을 수정할 필요까지는 없다고 한다.
그리고 다중상속과 관련된 문제에서의 효율성과 관련이 있다는 글도 있는데,
super
의 경우 다중 상속을 받을 경우에 상위 클래스들의 순서도를 정리해 주어서 다른 클래스에서 동일한
상위 클래스를 또 호출하게 되는 비효율적인 작업이 발생할 수 있는 부분을 막아준다는 것이다.
아래링크에 그에 대한 설명이 보다 더 자세히 설명되어 있다. 링크