다중상속은 하나의 클래스가 여러 클래스의 기능을 상속 받는 것을 의미합니다. Python은 다중상속을 지원하지만 Ruby는 지원하지 않습니다. Ruby는 Mixin이라는 접근을 통해서 비슷한 목적을 이룰 수 있습니다.
다중상속의 형식
다중상속의 단점
1.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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()) |