NOTE
- 오늘 내가 클래스 상속에 대해서 잘 모르고 있다는 사실을 발견했다.
- 클래스 상속에 대해서 공부한 내용을 간단히 기록해본다. 이미 알고 있는 건 최대한 간단히 남길 거다.
점프투파이썬
의 클래스 파트를 참고했음을 밝힌다.
계산기
만들기였다. result = 0
def add(num):
global result
result += num
return result
result1 = 0 / def add1(num)
, result2 = 0 / def add2(num)
... 이런 식으로 100개!!Calculator
클래스를 만들어두면 그 이후에는 cal1
, cal2
와 같이 객체가 그 역할을 대신 수행해준다. (코드가 정말 많이 줄거야!!)class Calculator:
def __init__(self):
self.result = 0
def add(self, num):
self.result += num
return self.result
cal1 = Calculator()
cal2 = Calculator()
__init__
은 해당 객체가 생성되자마자 실행되는 것으로 생각하면 된다. 아까 클래스로 만들기 전에 result = 0
이렇게 기본으로 깔고 가는 것이 필요했던 것처럼! cal1.add()
와 같이 쓸 수 있다.또한 클래스 내부에 있는 변수들 같은 경우에도 동일하게 접근이 가능하다. cal1.result
를 하면 0이 나오는 것처럼!즉, 클래스란 과자 틀
로 생각하면 된다. 한 번 과자틀을 만들어두면, 그 틀에 맞는 과자는 쉽게 만들어낼 수 있는 것이다.
class MoreCal(Calculator):
pass
pass
대신 변경(추가/수정 등)하고자 하는 내용을 적으면, class MoreCal
은 원래 클래스에 더해 해당 기능도 수행할 수 있게 된다.내가 생각하는 상속 시 하게 되는 유형은 다음과 같다.
1. 부모 클래스에 있는 함수를 수정한다.
class MorCal(Calculator):
def __init__(self):
super().__init__()
def add(self, num):
self.result += (num*2)
return self.result
메서드 오버라이딩(Method Overriding
이라고 한다. (자식 이기는 부모 없다!)super()
는 자식 클래스에서 부모 클래스의 내용을 사용하고 싶을 때 사용한다. 2. 부모 클래스에 함수를 추가한다.
class MorCal2(Calculator):
def add2(self, num):
self.result += (num/2)
return self.result
add2
라는 함수를 추가한 것이고, 자식 클래스에서 역시 부모 클래스에 있는 함수(가령 add
)를 그대로 사용할 수도 있다. 3. 부모 클래스에 있는 기본 값을 수정한다.
class MorCal(Calculator):
def __init__(self):
super().__init__()
def add(self, num):
self.result += (num*2)
return self.result
class MorCal3(Calculator):
def __init__(self):
self.result = 10
def add(self, num):
self.result += (num*2)
return self.result
super().__init__(name)
과 같이 변수명을 super()
를 통해 그대로 적어주면 된다! (변수들은 __init__
에 있을 거니 당연히 거기에 적으면 되겠지!) class MorCal(Calculator):
def __init__(self):
super().__init__(name)
self.result = 10
def add(self, num):
self.result += (num*2)
return self.result
클래스는 잘 알아두면 매우 유용할 것 같으니 잘 기억해두자.