320x100
# parents Class
class P_Class:
def __init__(self, pNum1, pNum2):
print('[P_Class] __init__() called!!')
self.pNum1 = pNum1
self.pNum2 = pNum2
# child Class
class C_Class(P_Class):
def __init__(self,cNum1, cNum2):
print('[C_Class] __init__() called!!')
self.cNum1 = cNum1
self.cNum2 = cNum2
cls = C_Class(10,20)
# 이렇게 C_Class가 P_Class를 상속받고 사용하고자 할때
# P_Class의 init메소드는 값이 초기화되지 않기 때문에 사실상 상속을 못받은거나 마찬가지다
# 이를 해결하기 위해서 다음의 방법들을 사용한다.
class P_Class:
def __init__(self, pNum1, pNum2):
# 이거는 init이 제대로 호출되었는지 확인하고자 하는 일종의 로그다.
print('[P_Class] __init__() called!!')
self.pNum1 = pNum1
self.pNum2 = pNum2
# child Class
class C_Class(P_Class):
def __init__(self,cNum1, cNum2):
# 이거는 init이 제대로 호출되었는지 확인하고자 하는 일종의 로그다.
print('[C_Class] __init__() called!!')
# 상속받고자하는 부모의 init을 상속받는 자식의 클래스에 이런식으로 넣어준다.
# 이때 주의할점은 self 뒤에 쓰이는 매개변수가 부모때에 쓰였던 매개변수 원소값이 아니라
# 자식 클래스에서 새롭게 받은 매개변수값을 아래와 같이이 입력해줘야한다.
# 방법1. 통상의 방법은 아니지만 암튼사용가능
# P_Class.__init__(self,cNum1, cNum2)
# 방법2. 이게 통상의 상속받고 init을 초기화 시키는 것이다.
super().__init__(cNum1,cNum2)
# 원리는 방법1과 같지만 self를 쓰지 않아도 된다는 점 등이 뭔가
# 혼동의 여지가 아주 약간이나마 줄어드는것같다.
self.cNum1 = cNum1
self.cNum2 = cNum2
cls = C_Class(10,20)
300x250
'개발일지 > 임시카테고리' 카테고리의 다른 글
파이썬 class 기초원리5 다중상속 (음.. 이건 난해하다) (0) | 2022.05.20 |
---|---|
파이썬 class 상속 기초원리4 init 메소드 기초활용 super() (0) | 2022.05.20 |
파이썬 class(클래스) 상속 기초원리2 단독 class이용시 주의사항 (0) | 2022.05.20 |
파이썬 class(클래스) 상속 기초원리1 (class는 반드시 기초원리를 모두 봐야함) (0) | 2022.05.20 |
파이썬 얕은복사, 깊은복사 (메모리값 문제 해결) (0) | 2022.05.20 |