Python & Ruby

다중상속

다중상속은 하나의 클래스가 여러 클래스의 기능을 상속 받는 것을 의미합니다. 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__)

ideone.com

 다중상속의 활용

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())

ideone.com

댓글

댓글 본문
작성자
비밀번호
  1. class 상속을 할때 괄호 안에 object를 항상 넣으셨는데,
    이번에 다중상속 첫번째 강의에는 object를 넣지 않으셧네요?
    제가 넣기도 해보고 안넣기도 해봣는데 오류는 안나더라구요.
    어떠한 차이가 있나요??
  2. 변지훈
    잘 봤습니다!! 감사합니다
  3. 닉슨
    파이썬 부분 완료했습니다. 이번에도 감사드립니다. 다음엔 뭘 봐야할지....흠 고민이 됩니다.

    웹 애플리케이션 + 자바+ 파이썬인데 프런트를 해보고 싶기도 하고 리눅스를 하고 싶기도 하네요ㅎㅎ
  4. 잘보고있습니다. 감사합니다.ㅎㅎ
  5. JustStudy
    에러에서도 더 확실하게 공부하게 됩니다.
    고맙습니다
  6. Youngpil Yang
    잘보고 있습니다2
  7. 아기장수 우투리
    잘보고있습니다~~
  8. 지식여행
    감사합니다. 잘들었습니다.
  9. 투투리
    감사합니다
  10. sojuilbo@daum.net
    점점 댓글이 줄어 드는군요.......암튼 Egoing님 강의 잘 들었습니다.
  11. 구묵
    감사합니다~
  12. Seong Nyeon Lee
    잘 봤습니다 ^ ^
  13. Frank
    고맙습니다. ^^
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기