Python출력 결과어려움 · 30점#클래스#상속#오버라이딩#다중 상속

67. 다중 상속과 super() 연쇄 호출 순서

다음 Python 프로그램의 실행 결과를 쓰시오.

1class Node:
2 def __init__(self):
3 self.log = []
4
5 def tag(self):
6 return "N"
7
8
9class A(Node):
10 def __init__(self):
11 super().__init__()
12 self.log.append("A")
13
14 def tag(self):
15 return "a"
16
17
18class B(Node):
19 def __init__(self):
20 super().__init__()
21 self.log.append("B")
22
23 def tag(self):
24 return "b" + super().tag()
25
26
27class C(A, B):
28 def __init__(self):
29 super().__init__()
30 self.log.append("C")
31
32
33class D(B, A):
34 pass
35
36
37c = C()
38d = D()
39print(c.log, d.log)
40print(c.tag(), d.tag())
41print([k.__name__ for k in C.__mro__])

해설을 먼저 보면 이후 정답 시 점수가 50%만 반영됩니다.