Python & Ruby

Override

오버라이드의 소개

 오버라이드의 형식

Python

Override/1.py

class C1:
    def m(self):
        return 'parent'
class C2(C1):
    def m(self):
        return super().m() + ' child'
    pass
o = C2()
print(o.m())

Ruby

Override/1.rb

class C1
  def m()
    return 'parent'
  end
end
class C2 < C1
  def m()
    return super()+' child'
  end
end
o = C2.new()
p o.m()

실행결과

parent child

Python | Ruby

오버라이드의 활용 (Python)

Override/2.py 

class Cal(object):
    _history = []
    def __init__(self, v1, v2):
        if isinstance(v1, int):
            self.v1 = v1
        if isinstance(v2, int):
            self.v2 = v2
    def add(self):
        result = self.v1+self.v2
        Cal._history.append("add : %d+%d=%d" % (self.v1, self.v2, result))
        return result
    def subtract(self):
        result = self.v1-self.v2
        Cal._history.append("subtract : %d-%d=%d" % (self.v1, self.v2, result))
        return result
    def setV1(self, v):
        if isinstance(v, int):
            self.v1 = v
    def getV1(self):
        return self.v1
    @classmethod
    def history(cls):
        for item in Cal._history:
            print(item)
    def info(self):
        return "Cal => v1 : %d, v2 : %d" % (self.v1, self.v2)
class CalMultiply(Cal):
    def multiply(self):
        result = self.v1*self.v2
        Cal._history.append("multiply : %d*%d=%d" % (self.v1, self.v2, result))
        return result
    def info(self):
        return "CalMultiply => %s" % super().info()
class CalDivide(CalMultiply):
    def divide(self):
        result = self.v1/self.v2
        Cal._history.append("divide : %d/%d=%d" % (self.v1, self.v2, result))
        return result
    def info(self):
        return "CalDivide => %s" % super().info()

c0 = Cal(30, 60)
print(c0.info())
c1 = CalMultiply(10,10)
print(c1.info())
c2 = CalDivide(20,10)
print(c2.info())

Cal => v1 : 30, v2 : 60
CalMultiply => Cal => v1 : 10, v2 : 10
CalDivide => CalMultiply => Cal => v1 : 20, v2 : 10

ideone.com

오버라이드의 활용 (Ruby)

Override/2.rb 

class Cal
  attr_reader :v1, :v2
  attr_writer :v1
  @@_history = []
  def initialize(v1,v2)
    @v1 = v1
    @v2 = v2
  end
  def add()
    result = @v1+@v2
    @@_history.push("add : #{@v1}+#{@v2}=#{result}")
    return result
  end
  def subtract()
    result = @v1-@v2
    @@_history.push("subtract : #{@v1}-#{@v2}=#{result}")
    return result
  end
  def setV1(v)
    if v.is_a?(Integer)
      @v1 = v
    end
  end
  def getV1()
    return @v1
  end
  def Cal.history()
    for item in @@_history
      p item
    end
  end
  def info()
    return "Cal => v1 : #{@v1}, v2 : #{@v2}"
  end
end
class CalMultiply < Cal
  def multiply()
    result = @v1*@v2
    @@_history.push("multipy : #{@v1}*#{@v2}=#{result}")
    return result
  end
  def info()
    return "CalMultiply => #{super()}"
  end
end
class CalDivide < CalMultiply
  def divide()
    result = @v1/@v2
    @@_history.push("divide : #{@v1}/#{@v2}=#{result}")
    return result
  end
  def info()
    return "CalDivide => #{super()}"
  end
end
c0 = Cal.new(30, 60)
p c0.info()
c1 = CalMultiply.new(10, 10)
p c1.info()
c2 = CalDivide.new(20, 10)
p c2.info()

ideone.com

 참고

github

댓글

댓글 본문
작성자
비밀번호
  1. wwwe
    http://www.adidaseqts.com
    http://www.yesyeezy.shop......tml
    http://www.curry5.us.com
    http://www.goldengoose-sneakers.com
    http://www.yesyeezy.shop......tml
    http://www.nfljerseys.us.org
    http://www.nikereact.org
    http://www.goldengoose.us.com
    http://www.yslhandbags.net
    http://www.adidasyeezy.co.uk
    http://www.curry4shoes.us.com
    http://www.yeezysuk.com
    http://www.jordansshoes.us.org
    http://www.yesyeezy.shop......tml
    http://www.michaelkors-outletstore.com
    http://www.adidasgazelle.us.com
    http://www.nike-hyperdunk.us.com
    http://www.chromeheartsstore.us
    http://www.valentinos.us.com
    http://www.bapehoodie.us
    http://www.yesyeezy.shop......tml
    http://www.converseoutlet.us.com
    http://www.nhljerseys.us.org
    http://www.canada--goose.co.uk
    http://www.redbottom-shoes.us.com
    http://www.filashoes.org
    http://www.fakerolex.us.com
    http://www.vans-shoes.us.org
    http://www.yesyeezy.shop......tml
    http://www.fila-shoes.us.com
    http://www.hermesonlineshop.com
    http://www.hardenshoes.us.com
    http://www.outletmichael-kors.us.com
    http://www.jordan13.us.com
    http://www.adidas-tubular.us.com
    http://www.golden-goose.us.com
    http://www.curry4.us.com
    http://www.guccibelt.us.com
    http://www.hermes-birkin.us.com
    http://www.goyard-handbags.us.com
    http://www.shoesjordan.us.com
    http://www.nikeairforce1.us.com
    http://www.jordanssneakers.us.com
    http://www.adidasstansmith.uk
    http://www.offwhiteclothing.us.com
    http://www.adidasultraboost.us.org
    http://www.monclerjacket.net
    http://www.fitflops-saleclearance.us.com
    http://www.longchamphandbagsoutlets.com
    http://www.longchamphandbagsonlines.com
    http://www.kobesneakers.com
    http://www.yeezy-500.us.com
    http://www.jordanshoes.org.uk
    http://www.lebron16.us
    http://www.polosralphlaurenuk.com
    http://www.hermes-belt.us.com
    http://www.hermes-handbags.us.com
    http://www.offwhitehoodie.us.com
    http://www.yesyeezy.shop......tml
    http://www.calvinkleinoutlet.us.com
    http://www.birkinbag.us.com
    http://www.pandorabracelet.in.net
    http://www.monclerjackets.us
    http://www.goyardbags.us
    http://www.jordansforcheap.us.com
    http://www.yeezysshoes.us.com
    http://www.mbtshoesonline.com
    http://www.goyardhandbags.org
    http://www.nikesneakers.us.com
    http://www.cheap-airjordans.us.com
    http://www.nike-airmax2017.us.com
    http://www.yesyeezy.shop......tml
    http://www.kd11.us
    http://www.paulgeorgeshoes.us.com
    http://www.offwhite.us.com
    http://www.jimmychoo-shoes.us.com
    http://www.outletonline-michaelkors.us.org
    http://www.nikeflyknit.us.com
    http://www.yeezy-boost.us.com
    http://www.yeezyshoesuk.com
    http://www.nike-roshe.us.com
    http://www.hermeshandbags.us.org
    http://www.nike-shox.us.com
    http://www.adidasoutletonline.com
    http://www.vans-outlet.us.com
    http://www.michaelkors-outletfactory.us.org
    http://www.outlettimberland.us.org
    http://www.yeezy-shoes.org.uk
    http://www.cheapnbajerseyswholesales.us.com
    http://www.kobebasketballshoes.net
    http://www.adidasstansmith.us.com
    http://www.supremehoodie.us.com
    http://www.yeezyboost-350.uk
    http://www.michael--korsoutlet.us.org
    http://www.airmax270.us.com
    http://www.yesyeezy.shop......tml
    http://www.jordan-retro.us.com
    http://www.long-champhandbags.org.uk
    http://www.kd11.us.com
    http://www.air-max.us.com
    http://www.jordan6.us.com
    http://www.michael-kors-handbags.com.co
    http://www.yeezy-boost350.us.com
    http://www.yesyeezy.shop......tml
    http://www.coachsonline.us.com
    http://www.yesyeezy.shop
    http://www.nikejordans.us.com
    http://www.ultraboost.us.com
    http://www.yeezyboost.in.net
    http://www.yeezyboost.com.co
    http://www.linksoflondonus.com
    http://www.nikecortez.us.com
    http://www.asicsgelkayano.us.com
    http://www.coachoutletstorefactory.com
    http://www.mlbjerseys.in.net
    http://www.curry5.us
    http://www.airmax90.us.org
    http://www.ferragamobelt.us.org
    http://www.nikepolo.us
    http://www.michaeljordanshoes.us.com
    http://www.outletlacoste.us.com
    http://www.michael-korsoutlets.us
    http://www.off-whiteshoes.us.com
    http://www.chromehearts.com.co
    http://www.adidas-nmds.us.com
    http://www.yeezy-shoes.us.org
    http://www.jordan12.us.com
    http://www.jordan4.us.com
    http://www.nikefoamposite.us.com
    http://www.katespadehandbags-outlet.us.com
    http://www.adidasnmduk.com
    http://www.toryburchs.us
    http://www.yeezy500.us
    http://www.kobeshoes.uk
    http://www.asics-shoes.us.org
    http://www.adidasyeezys.us
    http://www.coachoutletssale.com
    http://www.filas.us.com
    http://www.kyrieirving-shoes.us.com
    http://www.linksoflondon.us.com
    http://www.nikereact.us.com
    http://www.ferragamobelt.us
    http://www.nikebasketballshoes.us.com
    http://www.lebronjames-shoes.us.com
    http://www.goldengoosesneakers.us
    http://www.yeezy-shoes.org
    http://www.adidasyeezys.us.com
    http://www.nikeairmax2019.us.com
    http://www.kyrie4.org
    http://www.fila.us.org
    http://www.yesyeezy.shop/offwhite-x-nike-air-presto-black-aa3830002-p-291.html
    http://www.nikehuaracheshoes.us.com
    http://www.goyard.us.com
    http://www.adidasiniki.us
    http://www.adidas-pureboost.us.com
    http://www.yesyeezy.shop/adidas-yeezy-boost-350-v2-cream-white-cp9366-p-423.html
    http://www.kd-10.us
    http://www.yeezy700.us.com
    http://www.reebokoutlet.us.org
    http://www.monclersoutlet.us.com
    http://www.lacosteonlineshop.us.com
    http://www.michaelkorsoutletonlineus.com
    http://www.kobe-shoes.us.com
    http://www.kevindurant-shoes.us.com
    http://www.jordan11retro.us.com
    http://www.yeezy-shoes.ca
    http://www.coachoutletsfactory.com
    http://www.handbagsmichaelkors.com
    http://www.yesyeezy.shop/supreme-x-nike-air-more-uptempo-varsity-redwhite-902290600-p-592.html
    http://www.goldengoose-sneakers.us
    http://www.hoganoutletonline.us.com
    http://www.adidas-crazyexplosive.us.com
    http://www.nike-huarache.com
    http://www.vapormaxshoes.us
    http://www.michaelkors-outletonlines.us.com
    http://www.airjordanretro.uk
    http://www.yesyeezy.shop/balenciaga-17fw-triple-s-black-pink-women-sneaker-483523w06e38080-p-618.html
    http://www.balenciagashoes.us.com
    http://www.adidassuperstar.us.com
    http://www.michael-kors-handbags.org.uk
    http://www.lacostepolosshirts.com
    http://www.lebron16.us.com
    http://www.caterpillarboots.us.com
    http://www.nikeair-max.us.com
    http://www.goyardhandbags.us.com
    http://www.balenciagashoes.us.org
    http://www.yeezyboost-350v2.us.com
    http://www.adidaszxflux.com
    http://www.adidasnmds.com
    http://www.lebron15.net
    http://www.kyrie3.us.com
    http://www.adidasshoesonline.com
    http://www.coachoutlets.name
    http://www.nikeairmax2018.us.com
    http://www.hermesbelts.com
    http://www.balenciaga.us.com
    http://www.lebron16.net
    http://www.goldengoose-outlet.us.com
    http://www.hermesbelts.co.uk
    http://www.retro-jordans.us.com
    http://www.chromehearts.name
    http://www.rolex-replica.us.com
    http://www.goldengooseoutlet.us
    http://www.louboutinshoes.uk
    http://www.yeezyboost350v2shoes.us.com
    http://www.offwhitexjordan1.com
    http://www.yeezyboost350v2.org.uk
    http://www.lacostepolo.us.com
    http://www.russellwestbrookshoes.us.com
    http://www.yeezy-boosts.us.com
    http://www.longchamp-bags.us.org
    http://www.long-champ.us.com
    http://www.bape-hoodie.us.com
    wwwe
  2. 닐반
    2018. 10. 14.
  3. 유닉스가이
    감사합니다.
  4. Ji Yeoun Park
    2018.7.03 감사합니다.
  5. 정병찬
    2018 06 28
    수강완료
  6. 언어정복자
    2018.1.1 올해도 열공 할게요.
  7. remake
    뒷 수업 실습하다가 원인을 알았습니다.
    ruby로 실행되어야 했는데, ruby rails라는 걸로 실행이 되었던 거였군요.
    대화보기
    • remake
      1.rb 아톰에서 돌리니까 결과가 깨져 나오네요.
      'rails'��(��) ���� �Ǵ� �ܺ� ���, ������ �� �ִ� ���α׷�, �Ǵ�
      ��ġ ������ �ƴմϴ�.

      커맨드창 띄우고 돌리면 정상으로 나오는데, 다른 분들도 아톰에서 결과가 깨져 나오는지, 어떻게 하면 정상으로 나오게 할 수 있는지 궁금합니다.

      2.rb도 마찬가지네요.
    • 성현아빠
      완료
    • GoldPenguin
      완료햤습니다.
    • 박정우
      너무 좋은 강의 잘 듣고 혼자 공부하는데 많은 도움 받고 있습니다.
      예제를 참 이해하기 쉽고 실습에 도움이 되게 만드셨네요.
      감사합니다.
    • 김태윤
      완료했어요
    • 미림_likelion
      수강 완료했습니다. 감사합니다.
    • 심화평
      2017.07.06 감사합니다~
    • 나만의 부
      2017.4.30 감사합니다~
    • Ino Jeong
      맥이나 리눅스 쓰시는 분들은 터미널에서 직접 python3 override.py 이런식으로 실행해보시면 잘 돌아가는걸 확인하실 수 있을거에요. 아톰에서는 기본으로 설치되어있는 python 2.x 버젼으로 실행해서 super() 쓸 때 에러나는 경우가 있더라고요.
    • 컴맹공돌
      python 3 버전을 쓰는데도 계속 super() takes at least 1 argument (0 given)이러한 오류가 나서 진도를 나가지를 못하고 있네요.
      인터넷에서 찾아봐도 3.0버전에서 개선이 되서 super() 저 괄호 안에 특정 요소가 없어도 이고잉 님의 코드대로 적으면 오류가 안 날 것 같은데 계속 나는 이유 혹시 알 수 있을까요?
    • 문돌이
      감사합니다 잘 이해하였습니다 :)
    • Philip Oh
      감사합니다:)
    • 환글
      Override 가 그런 뜻이었군요 고맙습니다~~~
    • Mike Kang
      감사합니다 항상 잘 보고 있습니다
    • ㅇㅇ
      ^______________________________________________________________^
    • Dellivan
      아톰 경우 python 버전이 다르다보니 그런 것 같네요.

      cmd 나 터미널로 파일경로 들어가셔서 python3 1.py 하면 원하는 값 얻을 수 있습니다.
      대화보기
      • JustStudy
        단연 으뜸 강의!
        고맙습니다
      • hardrain
        "음 뭐랄까요 " 를 자주 사용하시는군요 ... ㅎㅎㅎ
      • 할로
        파이썬 2.x 에서는 super 내부에 클래스 네임과 self 가 들어가야 작동하네요. 위의 예제는 3.x 버전 기준으로 작성되어서 파수꾼님과 같은 에러가 발생하는것 같아요

        Python 2.x:
        return "CalMultiply => %s" % super(CalMultiply, self).info()
      • 파수꾼
        2.py에서 TypeError: super() takes at least 1 argument (0 given)이라는 메세지가 계속 뜨네요...작성해 놓은 예제를 카피해서 실행해도 같은 결과가 나옵니다.
      • Frank
        지난번 동영상에서 알았던 것을 시간이 지나니 잊어 버렸네요. ^^;
      • suriing
        좋은강의 감사합니다^^
      • Frank
        고맙습니다. ^^
      • egoing
        수정했습니다! 알려주셔서 감사합니다. ^^
        대화보기
        • Frank
          오버라이드의 소개 동영상에서 4분24초부터 5분 25초 사이에 화면이 까맣게 되고, 소리가 나지 않습니다.
          저만 그런지요?
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기