[생활코딩] 파이썬 오버라이드, 모듈 import 요약본
in Development on Python
생활코딩 강의를 보고 파이썬의 오버라이드, 모듈 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())