Python & Ruby

믹스인(Mixin)

믹스인 소개

 믹스인의 형식

module M1
  def m1_m
    p "m1_m"
  end
end
module M2
  def m2_m
    p "m2_m"
  end
end
class C
  include M1, M2
end
c = C.new()
c.m1_m()
c.m2_m()

 ideone.com

 믹스인의 활용

module Multiply
  def multiply()
    return @v1*@v2
  end
end
module Divide
  def divide()
    return @v1/@v2
  end
end
class Cal
  include Multiply,Divide
  def initialize(v1,v2)
    @v1 = v1
    @v2 = v2
  end
  def add()
    return @v1+@v2
  end
  def subtract()
    return @v1-@v2
  end
end


c = Cal.new(100,10)
p c.add()
p c.multiply()
p c.divide()

 ideone.com

댓글

댓글 본문
  1. 정효빈
    잘들었습니다!
  2. 드림보이
    잘 들었습니다...
  3. 후니
    완료
  4. 양민
    12/11
  5. 윤유상
    파이썬과 다르게 직접 상속을 하는게 아니라 mixin을 활용한 include 구문으로 여러 개의 클래스를 상속받는 루비. 감사합니다!
  6. cgoing
    cgoing / pass
  7. 허우룩
    2020.09.25
  8. PlayerSEAN
    저는 Python만 써서...
    2020/08/09 완료...?
  9. 쿠키앤크림
    2020/07/04 완료
  10. 김광현
    6/7완료
  11. ㅁㅁ
    아톰으로 보입니다!
    대화보기
    • evan500
      믹스인의 형식 강의에서 쓰신 에디터 어떤거 쓰신거에요? 깔끔해보이는데요. 서브라임은 아니죠? 아님 서브라임에 뭐를 많이 설치를 하셨나요?
    • 홍주호
      20190825 완료
    • 허니비
      190808
    • 호두
      고맙습니다
    • 정돌
      좋아요!
      ^^*!
    • kmw8462
      감사합니다.
    • yareuk
      2018-12-26
    • 닐반
      2018. 10. 15.
    • Ji Yeoun Park
      2018.07.03 감사합니다. 거의 끝나가서 신기해요 포기할 줄 알았는데 재미있는 강의 덕분에 끝까지 왔네요
    • 정병찬
      2018 06 28
      수강완료
    • 성현아빠
      완료
    • GoldPenguin
      완료했습니다.
    • 김태윤
      완료했어요
    • Django
      MixIn 역시 다중상속 입니다만 부모의 특정 필드가 있다는 전제하에 상속받아 사용하는 클래스입니다.

      차로 예를 들면 다중상속은 BMW라는 차가 세단과 SUV를 같이 상속받는다고 볼 수 있습니다.
      뭐 어째 쓰기야 하겠지만 종류가 늘수록 같이 쓰기 어려워지겠죠.
      세단은 바퀴가 4개인데 트럭은 바퀴가 10개이면.. 여기서부터 골치가 아픈거죠.

      믹스인은 자동차 바퀴의 휠을 결정하는 클래스를 상속받는다고 보면 됩니다.
      이 믹스인 클래스에는 바퀴갯수는 없는 대신 바퀴의 휠을 몇인치로 할건지 결정합니다.
      기본적으로 바퀴가 있다고 가정하에 상속받아 쓰는거죠.

      믹스인을 잘 짜놓으면 바퀴가 달린 어떠한 클래스에도 붙여 쓸 수 있습니다.
      비행기, 탱크, 마차 등등 바퀴만 달려있다는 확실한 전제만 갖추어지면 그때부터 이 믹스인이 휠을 결정해주는거죠.

      용도가 다른 클래스라 보면 되겠습니다.
      대화보기
      • 미림_likelion
        수강 완료했습니다. 감사합니다.
      • 심화평
        2017.07.06 감사합니다.
        부자 되고 싶네요 ㅜㅜ
      • 나만의 부
        2017.04.30 감사합니다.
        파이썬 루비 배우는 동안 중간에 왜 배우는 걸까..
        이게 맞는 걸까 하는 생각했는데
        다시 마음 잡고 왔습니다.
        여전히 어느 방향으로 갈지 어떻게해야할지 고민이지만
        이고잉님께서 이렇게 가르쳐주시니 배울 수 있음에 감사합니다.
      • from San Mateo
        "어우 여러분 부자되세요~"듣고 너무 웃겼어요 ㅋㅋ 예상치못한 농담까지 하시다니 ㅋㅋㅋ 암튼 설명 잘 들었습니다. 감사합니다 :)
      • Philip Oh
        잘 봤습니다~
      • 폭스킴
        조언 감사드립니다. ^^ 루비가 이상하게 끌리는데 대부분 파이썬 추천하시네요. ㅎ
        대화보기
        • point
          일단 저도 님처럼 초보입장입니다.
          오픈튜토리얼을 알기전에 파이썬과 루비중에 고민을해서 인터넷에서 많이 검색도 해보고 알아본 결과
          많은분들이 파이썬을 추천해줬습니다.. 파이썬은 웹프로그래밍도 쉽고 모듈지원도 많아서 해킹보안분야에서도
          뛰어난 언어라는말을 많이 들었습니다.
          보안학과를 졸업하고 동일분야로 나아가고 있기 때문에 당연히 주저없이 파이썬을 배우기로 했었구요
          근데 우연히 메타스플로잇을 알게되어 그 매력에 푹 빠져버렸고 메타스플로잇에서 쓰이는 언어는 루비였습니다.
          그래서 고민을 하다가 다시한번 검색하며 알아보기 시작했죠.
          그러던중 좀 과장일지 모르겠지만, 인상깊었던 글이 메타스플로잇 개발자들만 파이썬으로 갈아타면 프로그래밍 언어는 파이썬으로 대통합시대를 열수 있을거라는 글이었습니다.
          결론은 메타스플로잇 모듈개발을 하지 않으실꺼면 파이썬이 여러모로 활용도가 높을것으로 생각합니다.
          이미 많은 사람들이 이야기하고 있으니 한번 검색해보시면서 직접 보시면 파이썬을 추천하는 분들이 많습니다.
          (물론 저는 메타스플로잇때문에 루비에 더 많은 시간을 투자하기로 했습니다..ㅎ)
          대화보기
          • 폭스킴
            프로그래밍 초보인 제 입장에서 강의를 듣다보니까 루비가 좀 더 쉬워보이는 느낌이 드는데요~
            (막연하게 그냥 좀 더 간결하고 친근한 느낌이 듭니다.)
            두 언어를 동시에 배우는 장점이 분명히 크지만 초보에겐 2가지를 동시에 배우는 고통도 크네요.
            결국 주언어를 어떤 걸 선택하느냐는 갈림길도 분명히 생길 것 같구요.
            혹시 어떤 언어가 어느 분야에 강점을 가진다던가,
            현 시점에 더 두각을 나타내는 언어가 있다던가(혹은 한쪽이 쇠퇴하고 있다던가)
            이런 정보나 조언을 주실 수 있는 분 계실까요?
          • ziggystory
            명강의 늘 감사합니다.
          • Kim Say
            휴가기간동안 강의 열심히 봤습니다. 좋은 강의 감사드립니다. :)
          • 감사합니다.
          • JustStudy
            고맙습니다
          • 노마드
            좋은강의 항상 감사드립니다. 궁금한것이 하나 있는데요, 루비의 믹스인하고 파이썬의 다중상속은 얼핏 문법적으로만 보면 둘이상의 모듈혹은 클래스에서 메소드를 가져다 쓴다는점에는 큰 차이가 없는것 같은데, 앞서 다중상속은 코드가 복잡해져 잘안쓰인다는 말씀을 하셨고, 믹스인은 유용하게 많이 쓰인다는 말씀을 하셔서 좀 헷갈립니다. 제가 이해를 잘못한건지, 아니면 좀더 근본적인 차이가 있는건지 궁금하네요.
          • 라이언
            정말 쉽게 설명을 잘 해 주셔서 감사드립니다.
            혼자서 이해하느라 많이 시간을 보냈는데 정말 도움이 많이되고 있습니다.
          • 드디어
            드디어 여기까지 왔네요!! 이고잉님 정말 감사합니다. ^^ 봤어요가 4명밖에 되지 않아서 더욱 뿌듯하네요!
            그런데 이 수업 종강까지는 얼마나 남은건가요?ㅎㅎㅎ
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기