goodthings4me.tistory.com
■ 파이썬의 클래스 상속(inheritance)
# 부모클래스가 갖는 모든 메서드가 자식클래스에도 담긴다.
# 자식클래스에는 별도의 메서드를 추가할 수 있다.
class Father:
def run(self):
print('so fast..!')
class Son(Father):
def jump(self):
print('so high..!')
def main():
s = Son()
s.run() # so fast..! / 상속된 메서드
s.jump() # so high..! / 추가된 메서드
main()
■ 메서드 오버라이딩
# 상속 관계에서 부모클래스의 메서드와 동일한 이름의 메서드를 자식클래스가 정의하는 것
# 이 경우, 부모메서드는 보이지 않는 상태가 된다.(호출 불가 상태)
class Father:
def run(self):
print('so fast..!')
class Son2(Father):
def run(self): # Father 클래스의 run 메서드 가림(오버라이딩)
print("so fast, son's style")
def main():
s2 = Son2()
s2.run() # so fast, son's style / Son2의 run 메서드 호출
main()
# Son2의 객체에는 Father의 run과 Son2의 run이 모두 존재한다.
# Father의 run이 가려졌을 뿐, 가려진 run도 호출할 수 있다.
class Father:
def run(self):
print('so fast..!')
class Son3(Father):
def run(self):
print("so fast, son's style")
def run2(self):
super().run() # 부모클래스의 run() 호출 (가려진 run)
def main():
s3 = Son3()
s3.run() # so fast, son's style
s3.run2() # so fast..!
main()
■ __init__ 메서드 오버라이딩
class Car:
def __init__(self, carnumber, fuel):
self.carnumber = carnumber
self.fuel = fuel
def drive(self):
self.fuel -= 10
def add_fuel(self, f):
self.fuel += f
def show_info(self):
print('car type :', self.carnumber)
print('fuel :', self.fuel)
class Truck(Car):
def __init__(self, carnumber, fuel, c): # 부모클래스 변수 초기화값도 같이 전달받음
super().__init__(carnumber, fuel) # 부모 __init__ 호출 / 변수 초기화
self.cargo = c # 자식 변수 초기화
def add_cargo(self, c):
self.cargo += c
def show_info(self):
super().show_info() #부모클래스 show_info 메서드 호출
print('cargo :', self.cargo)
def main():
t = Truck('43럭5959', 0, 0)
t.add_fuel(100)
t.add_cargo(50)
t.drive()
t.show_info()
main()
[실행 결과]
car type : 43럭5959
fuel : 90
cargo : 50
[참고자료] 윤성우의 열혈파이썬 중급편
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 __init__, __str__, __iter__, __next__ 등의 메서드 (0) | 2020.09.12 |
---|---|
[python] 파이썬 파일 쓰기, 읽기 - open(), read(), readline(), readlines() (0) | 2020.09.11 |
[python] 파이썬 클래스와 객체의 본질, 그리고 독특한 특성 (0) | 2020.09.09 |
[python] 파이썬 sort(), sorted() 알아보기 (0) | 2020.09.08 |
[python] 파이썬 enumerate와 문자열 비교 (0) | 2020.09.08 |
댓글