본문 바로가기
개발/Python

Python에서 상속시 Super Class의 멤버 변수가 보이지 않는 경우

by belitino 2019. 4. 10.

출처: 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