본문 바로가기

IT/프로그래밍/Python

Python 두가지 상속 방법의 차이점

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의 경우 다중 상속을 받을 경우에 상위 클래스들의 순서도를 정리해 주어서 다른 클래스에서 동일한 

 
상위 클래스를 또 호출하게 되는 비효율적인 작업이 발생할 수 있는 부분을 막아준다는 것이다. 


아래링크에 그에 대한 설명이 보다 더 자세히 설명되어 있다. 링크


BlogWriter