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. cgoing
    cgoing / 2020.09.29
  2. 허우룩
    2020.09.24
  3. PlayerSEAN
    쿠키앤크림님 따라잡기
    2020/08/08 완료
  4. 쿠키앤크림
    pupu님 따라잡기
    2020/07/04 완료
  5. 김광현
    6/6완료
  6. 에우젠
    기본적으로 아톰은 현재 OS에 이미 설치된 2.x 버전으로 코드를 실행합니다. 따라서 코드를 실행하는 파이썬 엔진의 버전을 변경할 필요가 있는데요, 아래 링크를 보시고 따라하시면 됩니다. 링크가 이해 안 되시는 분은 구글에서 atom python3 이라고 치시고 검색해보시면 비슷한 해결법이 많이 나오니 참고하시면 되겠습니다.
    https://hellobaek.tistory.com/7
    대화보기
    • 2020/04/28 완료
    • 맥반장
      2020-04-04 한 번에 이해하기가 어렵네요. 여러 번 반복해서 수강할 듯 싶습니다ㅜㅜ
    • liero1p
      근데 atom 에서는 typeError 가 나는데 terminal에서 파이썬 파일을 실행하면 문제없이 결과가 잘 출력되는 경우가 종종 있네요. 이건 atom 설정을 바꿔주면 괜찮아질 것 같은데.. 혹시 방법을 아시는 분이 있을까요?
    • 가재준
      완료
    • 홍주호
      20190825 완료
    • 허니비
      190808
    • 얼그레이
      오버라이드 기능 매우 재밌네요!! 감사합니다 :)
      190607
    • Hotak Choi
      19/05/11 !감사합니다
    • huyk
      190503완료 감사합니다
    • wiseman
      190420 2300 완료
    • 19.04.20 완료
    • 호두
      고맙습니다
    • 정돌
      좋아요!
      ^^*!
    • kmw8462
      감사합니다.
    • yareuk
      2018-12-26
    • 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
    • 닐반
      2018. 10. 14.
    • 유닉스가이
      감사합니다.
    • Ji Yeoun Park
      2018.7.03 감사합니다.
    • 정병찬
      2018 06 28
      수강완료
    • 언어정복자
      2018.1.1 올해도 열공 할게요.
    • 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
          좋은강의 감사합니다^^
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기