Базовое наследование
Часть раздела 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): для создания наследования. Это помогает повторно использовать код и создавать логические иерархии классов.
Задание
Среднеvehicle.py: Содержит родительский классVehiclecar.py: Содержит классCar, который наследуется отVehicledriver.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 без измененийВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Object Oriented Programming
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — Простой калькулятор4Наследование
Базовое наследованиеФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовИтоги — Иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy5Полиморфизм
Снова о переопределении методовУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовИтоги — Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыИтоги — Менеджер банковского счета6Инкапсуляция
Public, Protected, Private члены классаМодификаторы доступаСокрытие данныхДекораторы property: продвинутый уровеньИтоги: Система учета студентов12Проект: Управление библиотекой
Обзор проектаКлассы Book и User