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
의 경우 다중 상속을 받을 경우에 상위 클래스들의 순서도를 정리해 주어서 다른 클래스에서 동일한
상위 클래스를 또 호출하게 되는 비효율적인 작업이 발생할 수 있는 부분을 막아준다는 것이다.
아래링크에 그에 대한 설명이 보다 더 자세히 설명되어 있다. 링크
'IT/프로그래밍 > Python' 카테고리의 다른 글
Python에서 Dropbox SDK를 빌드할때 발생하는 bug 해결책 (0) | 2015.08.21 |
---|---|
Python 에서 Dropbox SDK 이용하기 (0) | 2015.08.17 |
PyCrypto를 이용해서 AES방식으로 암호화 하기 (0) | 2015.08.07 |
Python에서 I18N 적용하기 (0) | 2015.06.21 |
Mac환경에서 python으로 clipboard 값 가져오기 (0) | 2015.02.28 |