알고리즘 문제로 문법을 익히다보니
클래스와 상속등을 이미 배웠지만, 코드상에서 익숙하지 않았다.
요즘 LSTM등 시계열 처리에 도움이 되는 모델들을 보고있는데, 코드상에서 super()를 심심치않게 볼 수 있다.
[Python] Tip - super()로 부모클래스를 초기화
super를 사용하지 않고 자식클래스에서 부모클래스를 초기화 할 때 다음과 같은 방법을 사용합니다. class Parent: def __init__(self,num): print('parent', num) class Child(Parent):ㄷ def __init__(self): Pa..
brownbears.tistory.com
C++에서도 있었던 문제였지만, 다이아몬드 상속의 경우 Child의 instance를 만들때 super를 사용하지 않으면,
Parent1과 Parent2의 생성자가 호출되면서 GrandParent의 생성자가 2번 호출되는 문제가 발생한다.
이와 같은 문제를 유연하게 해결하기 위해 super를 사용한다
super의 인자를 넣고 안넣고는 python2, python3간의 차이점인데 호환성을 따져봤을 때 2의 문법으로 작성하는 것이 좋다.
super(__class__, self).__init__()
말로 표현하면 ClassName에 해당하는 Class의 부모(Super)를 상속 받아라. 라는 메소드로 정리할 수 있겠다.
클래스 상속 및 super 함수의 역할
파이썬 클래스 상속 및 super 함수의 역할에 대해 정리해 보았습니다.
velog.io
'Programming language > Python' 카테고리의 다른 글
파이썬 레퍼런스 링크 (0) | 2021.06.29 |
---|---|
PEP8 참고 링크 (0) | 2021.06.29 |
[Python] *args , **kwargs에 대해서 (0) | 2021.01.07 |
[Python] Deque method정리 (0) | 2020.12.23 |
[Q2] 왜 코테에서 deque(덱)을 쓰고있는거야 ? (0) | 2020.12.23 |