Menu
Coddy logo textTech

상속의 기초

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 animal

Dog가 __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): 구문을 사용하세요. 이를 통해 코드를 재사용하고 논리적인 클래스 계층 구조를 만들 수 있습니다.

challenge icon

챌린지

중급
  • 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를 상속받습니다
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Object Oriented Programming의 모든 레슨