파이썬 python 클래스 class 다중상속 기본문법

이번시간에는 파이썬(python)의 클래스(class)의 다중상속에 대해서 알아보고자 합니다. 이전에는 클래스 상속과 비슷하지만 약간의 차이가 있습니다.

기본적으로 다중상속은 대부분의 언어가 지원하고 있지 않으며, 파이썬에서 지원하지만 코드가 많아지면 단점이 존재하므로 여러개의 클래스(class)를 사용하는경우 오류가 발생할수고 있습니다.

1.다중상속 기본문법

예제를 보면 class C1, classC2 를 class C3(C1, C2) 로 C3 클래스는 C1 과 C2 를 상속받습니다. 변수 c = C3(), c.c1_m(), c.c2_m() 을 실행합니다.

변수 c = C3 와 같으므로 c.c1_m() 함수를 상속받아 c1_m 이 출력되고, c.c2_m 은 C2 에 있는 c2_m 을 상속받아 c2_m 이 출력되는것을 확인할수가 있습니다.

2.다중상속의 문제점

위에서 기본문법을 보면 편리한 기능이라고 할수도 있지만 클래스의 기능이 많아지고 함수가 많아지면 우선순위에 있는 함수만 출력되는 단점이 있습니다.

예제를 보면 class C1() 의 클래스에는 함수 def m(): 이 있으며, class C2() 클래스에도 def m(): 동일한 함수가 있습니다.

c.m() 함수를 출력을 하면 우선순위가 높은 class C1 에 있는 def m() 이 출력이 되지만, 뒤에 위치한 calss C2() 의 함수 def m 은 출력되지 않습니다.

때문에 코드가 길어지면 오류가 발생할수가 있으므로, 다중상속의 우선순위를 검사하기위해 C3.__mro 를 사용하면 우선순위를 검사할수가 있습니다.

위에서 말한것과 같이 다중상속에 있는 함수가 많아지만 우선순위가 높은 함수만 출력이 되므로 우선순위의 class 를 검사하기 위해 print(C3.mro) 를 출력하면, class 우선순위를 확인할수가 있습니다.

3.다중상속 계산기 예제

우리가 지금까지 객체를 다루면서 계산기 예제를 살펴보았는데 이번예제도 계산기 기능에 다중상속을 적용해 보도록합니다.

class Cal(CalMultiply, CalDivide)는 클래스 Cal 에 두개의 클래스를 상속(예제 참조)받았으며, 변수 c = Cal(10, 10), 은 c.add() 는 숫자 20, Cal 클래스에서 상속받은 c.multiply() 는 v1*v2 이므로 숫자 100이 출력됩니다.

지금까지 파이썬(python)의 클래스(class) 다중상속의 기본문법에 예제를 살펴보았습니다. 실제로 다중상속은 많이 사용하지는 않는만큼 약간의 이해만하고 넘어가시는것이 좋습니다.

Leave a Comment