Функция super()
Часть раздела Объектно-ориентированное программирование путешествия по Python на Coddy. Урок 18 из 64.
Функция super() позволяет дочернему классу вызывать методы родительского класса. Это позволяет расширять функциональность родительского класса, а не полностью заменять её.
Вот пример использования super() в конструкторе:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Вызвать __init__ родительского класса
self.breed = breed
print(f"Dog breed set: {breed}")Создай объект собаки:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Вывод:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverИспользуй super(), чтобы расширить методы родительского класса:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Сначала вызовите метод родительского класса
print("Woof!") # Добавьте поведение, характерное для собакиВызови расширенный метод:
buddy = Dog()
buddy.make_sound()Вывод:
Generic animal sound
Woof!Без super() вы потеряли бы функциональность родительского класса:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Только кошачий звук, родительский метод игнорируется
cat = Cat()
cat.make_sound()Вывод:
Meow!Ключевой момент: используй super(), чтобы вызывать методы родительского класса из дочерних классов. Это позволяет расширять функциональность, а не полностью заменять её. Обычно super() используют для вызова методов __init__ родительского класса и расширения его поведения.
Задание
СреднеВ этом задании ты реализуешь иерархию классов Person и Employee с использованием наследования.
person.py: содержит класс Person с атрибутами name и ageemployee.py: содержит класс Employee, наследующий класс Persondriver.py: основной файл для проверки твоей реализации
В каждом файле есть подробные комментарии TODO, которые помогут тебе выполнить реализацию.
Попробуйте сами
# TODO: Импортируйте класс Person из person.py
# TODO: Импортируйте класс Employee из employee.py
def main():
# TODO: Создайте объект Person с именем "Alice" и возрастом 30
person = None
# TODO: Создайте объект Employee с именем "Bob", возрастом 35 и профессией "Developer"
employee = None
# TODO: Вызовите метод introduce() у объекта Person
# Ожидаемый вывод: "Hi, I'm Alice and I'm 30 years old"
# TODO: Выведите пустую строку для отступа — print()
# TODO: Вызовите метод introduce() у объекта Employee
# Ожидаемый вывод:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python