상속의 기초
Coddy Python 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 64개 중 17번째.
상속은 클래스가 다른 클래스로부터 속성과 메서드를 상속받을 수 있게 하여, 부모-자식 관계를 생성합니다.
다음은 부모 클래스의 예시입니다:
class Animal:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am {self.name}, an animal")부모 클래스로부터 상속받는 자식 클래스를 생성합니다:
class Dog(Animal):
pass # Animal로부터 모든 것을 상속받습니다class Dog(Animal): 구문은 Dog가 Animal을 상속받는다는 것을 의미합니다. 부모 클래스 이름을 괄호 안에 넣으세요.
두 클래스 모두에서 객체를 생성합니다:
generic_animal = Animal("Creature")
buddy = Dog("Buddy")상속받은 메서드를 사용합니다:
generic_animal.info()
buddy.info()출력:
I am Creature, an animal
I am Buddy, an animalDog가 __init__이나 info를 정의하지 않더라도, Animal로부터 자동으로 그것들을 가져옵니다.
자식 클래스에 새로운 메서드를 추가할 수 있습니다:
class Dog(Animal):
def bark(self):
print(f"{self.name} says Woof!")
buddy = Dog("Buddy")
buddy.info() # 상속된 메서드
buddy.bark() # 새로운 메서드출력:
I am Buddy, an animal
Buddy says Woof!핵심 포인트: 자식 클래스는 부모 클래스로부터 모든 속성과 메서드를 상속받습니다. 상속을 구현하려면 class Child(Parent): 구문을 사용하세요. 이를 통해 코드를 재사용하고 논리적인 클래스 계층 구조를 만들 수 있습니다.
챌린지
중급vehicle.py: 부모Vehicle클래스를 포함합니다car.py:Vehicle에서 상속받는Car클래스를 포함합니다driver.py: 구현을 테스트하기 위한 메인 파일입니다
각 파일에는 구현을 안내하는 상세한 TODO 주석이 포함되어 있습니다. 다음을 수행해야 합니다:
- make 및 model 속성을 사용하여
Vehicle클래스를 완성하세요 Car클래스에 적절한 클래스 상속을 구현하세요- 파일 간에 올바른 import 문을 설정하세요
- 드라이버 파일에서 객체를 생성하고 테스트하세요
TODO 주석은 해결책에 대한 단계별 안내를 제공하므로 주의 깊게 따르세요.
치트 시트
상속을 사용하면 class Child(Parent): 구문을 사용하여 한 클래스가 다른 클래스로부터 속성과 메서드를 상속받을 수 있습니다:
class Animal:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am {self.name}, an animal")
class Dog(Animal):
pass # Animal로부터 모든 것을 상속받습니다자식 클래스는 부모의 모든 메서드와 속성을 자동으로 상속받습니다:
buddy = Dog("Buddy")
buddy.info() # 상속받은 메서드를 사용합니다
# Output: I am Buddy, an animal상속받은 기능을 유지하면서 자식 클래스에 새로운 메서드를 추가합니다:
class Dog(Animal):
def bark(self):
print(f"{self.name} says Woof!")
buddy = Dog("Buddy")
buddy.info() # 상속받은 메서드
buddy.bark() # 새로운 메서드직접 해보기
# TODO: vehicle.py에서 Vehicle 클래스를 임포트하세요
# TODO: car.py에서 Car 클래스를 임포트하세요
# TODO: 제조사가 "Toyota"이고 모델이 "Corolla"인 Vehicle 객체를 생성하세요
vehicle = None
# TODO: 제조사가 "Honda"이고 모델이 "Civic"인 Car 객체를 생성하세요
car = None
# TODO: vehicle 객체의 display_info() 메서드를 호출하세요
# 예상 출력: "Vehicle: Toyota Corolla"
# TODO: car 객체의 display_info() 메서드를 호출하세요
# 예상 출력: "Vehicle: Honda Civic"
# 참고: Car는 수정 없이 Vehicle로부터 display_info를 상속받습니다이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.