Menu
Coddy logo textTech

Базовое наследование

Часть раздела Object Oriented Programming путешествия по Python на Coddy — урок 17 из 64.

Наследование позволяет классу наследовать атрибуты и методы от другого класса, создавая отношения «родитель-потомок».

Вот пример родительского класса:

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: Содержит класс Car, который наследуется от Vehicle
  • driver.py: Основной файл для тестирования вашей реализации

Каждый файл содержит подробные комментарии TODO, которые помогут вам в реализации. Вам потребуется:

  • Завершить класс Vehicle, добавив атрибуты make и model
  • Реализовать правильное наследование классов в классе Car
  • Настроить правильные инструкции импорта между файлами
  • Создать и протестировать объекты в файле драйвера

Внимательно следуйте комментариям 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 из vehicle.py
# TODO: Импортируйте класс Car из car.py

# TODO: Создайте объект Vehicle с маркой "Toyota" и моделью "Corolla"
vehicle = None

# TODO: Создайте объект Car с маркой "Honda" и моделью "Civic"
car = None

# TODO: Вызовите метод display_info() у объекта vehicle
# Ожидаемый вывод: "Vehicle: Toyota Corolla"

# TODO: Вызовите метод display_info() у объекта car
# Ожидаемый вывод: "Vehicle: Honda Civic"
# Примечание: Car наследует display_info от Vehicle без изменений
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Object Oriented Programming