출처: https://stackoverflow.com/questions/10064688/cant-access-parent-member-variable-in-python
https://www.codecademy.com/en/forum_questions/560afacd86f552c8a70001dd
Python에서 Class를 상속해서 쓰면서 super class의 멤버 변수와 메소드를 사용하려고 했는데, child class의 __init__ 메소드에서 정의한 멤버 변수만 보이고 super class의 정보가 하나도 보이지 않는 문제가 발생하였습니다.
https://wikidocs.net/16073 에 나와있는 대로 보면 그냥 상속해서 쓰면 되는 것처럼 보이는데, 실상은 그게 아니더군요.
https://wikidocs.net/14601 에 나온 것 처럼 super class의 정보를 상속해서 쓰려면 child class의 __init__에서 super class의 __init__을 호출해야 합니다. 다음처럼 말이죠
class Element:
def __init__(self,id):
self.id = id
self.nodeIds = []
def computeStiffness(self):
print('Element::computeStiffness')
def printElement(self):
print('id : %d'%self.id)
class Q4Element(Element):
def __init__(self,id,nodeIds):
super().__init__(id) # or Element.__init__(self,id)
self.nodeIds = nodeIds
def computeStiffness(self):
print('Q4Element::computeStiffness')
Q4Element()의 __init__을 보시면 super().__init__(id)를 호출하는 것을 보실 수 있습니다.
이걸 몰라서 한참을 헤맸네요.
'개발 > Python' 카테고리의 다른 글
Python의 arctan, arctan2 차이 (0) | 2020.09.13 |
---|---|
Python Version 2.7 required... 대처 방법 (0) | 2013.02.22 |