슈퍼클래스 라고 불리우는 부모클래스와 자식클래스(서브클래스) 의 관계를 알아보자.
자식클래스는 부모클래스의 모든 속성과 메서드를 사용할 수 있다. 모든 것을 상속받기 때문이다. 이와 같은 속성때문에 상속은 코드를 수정, 확장시킬 때 많이 사용한다.
즉, 클래스의 상속은 코드의 생산성 및 유지보수에 용이하고 이는 코드의 가독성과도 연결된다.
class Car():
"""Parent Class"""
def __init__(self, tp, color):
self.type = tp
self.color = color
class BenzCar(Car): # Car class 를 상속받음
"""Sub Class"""
def __init__(self, car_name, tp, color): # 부모한테 넘길 tp 와 color
super().__init__(tp, color) # 부모에게 넘겨줌
self.car_name = car_name
def show_model(self):
return "Your Car Name : %s" %self.car_name
model1 = BenzCar('520d', 'sedan', 'red')
print(model1.color) # red 부모클래스
print(model1.car_name) # 520d 자식클래스
또한 자식클래스에 부모클래스에 있는 메서드와 동일한 이름으로 메서드를 작성할 수 있는데, 이를 오버라이딩(Method Overriding) 이라고 한다.
오버라이딩하면 부모메서드 대신 자식메서드가 실행이 되기 때문에 부모에게서 상속은 받았지만 변경하고 싶을 때 사용한다. 만약 오버라이딩 된 코딩에서 부모메서드에 접근하고 싶다면super().method()
를 사용하면 된다.
상속의 뎁스가 궁금하거나 부모클래스가 궁금할 때, 상속 정보를 리스트 형태로 반환해주는 mro()
메서드를 사용할 수 있다. (참고로 모든 클래스는 object 클래스에게 상속을 받는다)
모듈을 디렉토리 형태로 구조적으로 관리하는 것을 패키지 라고 한다. 쉽게 말해 모듈은 파일, 패키지는 이를 모아놓은 폴더라고 할 수 있다.
.. : 부모 디렉토리
. : 현재 디렉토리
from 패키지.모듈 import 사용할 클래스(or 함수) 1, 클래스2
와 같은 형태로 불러와 사용할 수 있다. 리소스를 낭비하지 말고 내가 필요한 것만 가져와서 사용하는 것이 권장된다. 출처
점프 투 파이썬, https://wikidocs.net/28
패스트캠퍼스, 코딩+알고리즘 강의