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를 넣지 않으셧네요?
      제가 넣기도 해보고 안넣기도 해봣는데 오류는 안나더라구요.
      어떠한 차이가 있나요??
    • 변지훈
      잘 봤습니다!! 감사합니다
    • 닉슨
      파이썬 부분 완료했습니다. 이번에도 감사드립니다. 다음엔 뭘 봐야할지....흠 고민이 됩니다.

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