언어/Python
Python class 상속 관련 super() 함수 사용하여 다중 상속
darkdevilness
2021. 12. 28. 00:43
728x90
class 를 사용하다보면, 아래와 같이 사용하는 경우가 발생하고, class 상속 관련하여 잘 모르면 이부분에서 애를 먹어서 내용을 정리함
class d( c,b,a): .....
요약 내용는 아래와 같고, sample 코드도 아래와 같이 첨부함. 내용은 간략하므로 실행해 보면, 알 수 있을 것이라 생각함
super().__init__() 나 class 관련 내용은 다른 곳에서 공부하고 오시면 됨.
# Class A -> Class C::Class B -> Class C -> Class D 순으로 상속을 가져 온다.
# 그래서 __init__() 는 A_init__() -> B_init__() -> C_init_-() -> D_init__() 순으로 실행한다.
# 따라서 Class D의 변수는 마지막 상속 Class , 중간 상속 Class, 최초 상속 Class 순으로 배열한다
# 최초 상속 class 는 super().__init__() 는 사용하지 않아도 된다.
# 그러나 마지막 상속, 중간 상속 Class 는 super().__init__() 를 반드시 넣어 상위 class 의 init() 를 실행한다.
# args 는 super().__init__() 의 변수로 넣어 상위 class 에 값을 전달한다.
class a:
def __init__(self, *args):
# super().__init__()
print("Class A")
self.v_a = "val-a = {}".format(args)
def a(self):
print("Fn-a", self.v_a)
class b:
def __init__(self, *args):
super().__init__(*args)
print("Class B")
self.v_b = "val-b = {}".format(args)
def b(self):
print("Fn-b", self.v_b)
class c(b):
def __init__(self, *args):
super().__init__(*args)
print("Class C")
self.v_c = "val-c = {}".format(args)
def c(self):
print("Fn-c", self.v_c)
class d(c, b, a):
def __init__(self, *args):
super().__init__(*args)
print("Class D")
self.v_d = "val-d = {}".format(args)
self.a()
self.b()
self.c()
self.d()
def d(self):
print("Fn-d", self.v_d)
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
if __name__ == '__main__':
print_hi('PyCharm')
d = d("parameter")
728x90