상속 Inheritance
상속 Inheritance
부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게하는 것으로,
일부분 변경이 필요한 경우 자식클래스에서 해당 기능만 수정(정의)하여 사용할 수 있다.
python - 상속(inheritance)
상속이 없을 때
# 상속의 문법
class Class1(object):
def method1(self):
return 'm1'
c1 = Class1()
print(c1.method1())
## 상속이 없을 때
class Class2(object):
def method1(self):
return 'm1'
def method2(self):
return 'm2'
c2 = Class2()
print(c2.method1())
print(c2.method2())
상속이 없을 때 class는 method1, method2를 하나하나 반복하고 있다.
method1은 'm1' 값만 return 시키고
method2는 'm2' 값만 return 시킨다.
상속이 있을 때
## 상속이 있을 때
class Class3(Class1): # class3 = class1의 기능을 가지고 method2의 기능을 추가함
def method2(self):
return 'm2'
c3 = Class3()
print(c3, c3.method1())
print(c3, c3.method2())
상속이 있을 때,
Class3는 Class1을 상속받아 method2, method1을 모두 실행할 수 있다.
print(c3, c3.method1())은 method1을 c3에서 실행하는데
method1은 Class3에서 발견할 수 없지만, Class3의 부모class인 Class1에서 method1을 발견하여 실행할 수 있다.
상속의 응용
### 상속의 응용
# 계산기 Cal
class Cal(object):
def __init__(self, v1, v2): # v1, v2 : __init__내부에서만 사용가능한 지역변수
if isinstance(v1, int): # isinstance : 매개변수 v1이 int 값인지 알아보는 함수
self.v1 = v1
if isinstance(v2, int):
self.v2 = v2
def add(self):
return self.v1 + self.v2
def subtract(self):
return self.v1 - self.v2
def setV1(self, v):
if isinstance(v, int): # v = int 값인지 확인 True라면 실행, False 라면 무시
self.v1 = v
def getV1(self):
return self.v1
매개변수 v1, v2를 더하고 곱하는 계산기class Cal이다.
## CalMultiply
class CalMultiply(Cal): # Cal이 가진 모든 method를 상속받음
def multiply(self):
return self.v1*self.v2
c1 = CalMultiply(10,10)
print(c1.add())
print(c1.multiply())
계산기 class(Cal)을 class CalMultiply가 상속받는다.
CalMultiply의 method인 muliply는 v1 * v2로 v1과 v2를 곱해준다.
c1 = CalMultiply(10, 10)은
class Cal의 매개변수 v1, v2 값으로 들어가서
c1.add(10, 10) = 20
c1.multiply = 100
값을 받을 수 있다.
+ 나눗셈 기능 추가(divide)
## CalMultiply
class CalMultiply(Cal): # Cal이 가진 모든 method를 상속받음
def multiply(self):
return self.v1*self.v2
class CalDivide(CalMultiply): # CalMultiply가 가진 모든 method를 상속받음
def divide(self):
return self.v1 / self.v2
c1 = CalMultiply(10,10) # c1은 Cal과 CalMultiply의 method를 모두 사용가능하다.
print(c1.add())
print(c1.multiply())
c2 = CalDivide(30, 10) # c2은 Cal, CalMultiply, CalDivide의 method를 모두 사용가능하다.
print(c2, c2.add())
print(c2, c2.multiply())
print(c2, c2.divide())
Class CalDivide(CalMultiply)는
새로운 method인 divide(self)로 나누기self.v1 / self.v2를 사용할 수 있다.
Class CalDivide(CalMultiply)는 Class Cal, CalMultiply, CalDivide의 method를 모두 상속받아 사용할 수 있다.
'python' 카테고리의 다른 글
python - Override (재정의) (0) | 2022.04.29 |
---|---|
python - Class member, Class method (0) | 2022.04.29 |
pyhthon - 인캡슐레이션Encapsulation(캡슐화) (0) | 2022.04.28 |
python - 객체 지향 프로그래밍(Object Oriented Programming) (0) | 2022.04.27 |
python - 모듈(modules)란? (0) | 2022.04.27 |
댓글