Функция super()
Часть раздела Object Oriented Programming путешествия по 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() для вызова методов родительского класса из дочерних классов. Это позволяет расширять функциональность, а не полностью заменять её. Типичные варианты использования включают вызов родительских методов __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()В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела 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Система выдачи книгФункционал поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python