다중상속은 하나의 클래스가 여러 클래스의 기능을 상속 받는 것을 의미합니다. Python은 다중상속을 지원하지만 Ruby는 지원하지 않습니다. Ruby는 Mixin이라는 접근을 통해서 비슷한 목적을 이룰 수 있습니다.
다중상속의 형식
다중상속의 단점
1.py
class C1(): def c1_m(self): print("c1_m") def m(self): print("C1 m") class C2(): def c2_m(self): print("c2_m") def m(self): print("C2 m") class C3(C2, C1): def m(self): print("C3 m") c = C3() c.c1_m() c.c2_m() c.m() print(C3.__mro__)
다중상속의 활용
2.py
class CalMultiply(): def multiply(self): return self.v1*self.v2 class CalDivide(): def divide(self): return self.v1/self.v2 class Cal(CalMultiply, CalDivide): def __init__(self, v1, v2): if isinstance(v1, int): self.v1 = v1 if isinstance(v2, int): self.v2 = v2 def add(self): return self.v1+self.v2 def subtract(self): return self.v1-self.v2 def setV1(self, v): if isinstance(v, int): self.v1 = v def getV1(self): return self.v1 c = Cal(100, 10) print(c.add()) print(c.multiply()) print(c.divide())