[생활코딩] 파이썬 오버라이드, 모듈 import 요약본


생활코딩 강의를 보고 파이썬의 오버라이드, 모듈 import 요약하려 한다.

오버라이드의 형식

  • 상속 받은 부모 클래스의 메소드를 자식 클래스가 새롭게 만드는것
  • 부모 클래스의 메소드랑 똑같은 이름을 자식 클래스가 똑같이 쓰면 덮어쓰기(오버라이드)해버린다.
  • 부모 클래스 메소드도 가져오기 : super().메소드명을 쓰면 된다.
class C1:
    def m(self):
        return 'parent'
class C2(C1):
    def m(self):
        return super().m() + ' child'
    pass
o = C2()
print(o.m())

오버라이드의 활용 (Python)

  • 아래 코드를 잘보면 info 메소드를 오버라이드 해서 super().info()로 가져오는 형식
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

객체와 모듈

  • import해서 모듈 이름을 가져오면 된다.
    # lib.py
    class A:
      def a(self):
          return 'a'
    
    # lib 불러오기
    import lib
    obj = lib.A()
    print(obj.a())
    





© 2018. by statssy

Powered by statssy