Ответ
Наследование — это один из ключевых принципов ООП, который позволяет создавать новый класс (потомок) на основе существующего (родитель), перенимая его свойства и методы. Основная цель — повторное использование кода и построение иерархии классов по принципу "is-a" (является).
Синтаксис
Для наследования родительский класс указывается в скобках после имени класса-потомка.
# Родительский (базовый) класс
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Потомок должен реализовать этот метод")
# Дочерний класс, наследующий от Animal
class Dog(Animal):
# Переопределение (override) метода родителя
def speak(self):
return f"{self.name} говорит Гав!"
# Другой дочерний класс
class Cat(Animal):
def speak(self):
return f"{self.name} говорит Мяу!"
my_dog = Dog("Рекс")
print(my_dog.speak()) # Вывод: Рекс говорит Гав!
Расширение функциональности с super()
Функция super()
позволяет вызвать метод родительского класса из дочернего. Это полезно для расширения, а не полной замены поведения.
class LoudDog(Dog):
def speak(self):
# Вызываем оригинальный метод speak() из родительского класса Dog
original_sound = super().speak()
# Добавляем новую функциональность
return original_sound.upper()
my_loud_dog = LoudDog("Бобик")
print(my_loud_dog.speak()) # Вывод: БОБИК ГОВОРИТ ГАВ!
Ключевые аспекты
- Переопределение методов: Потомок может предоставить свою реализацию метода, который уже есть у родителя.
super()
: Инструмент для доступа к методам родительского класса.- Проверка иерархии:
isinstance(obj, Class)
: проверяет, является ли объект экземпляром класса или его потомков.issubclass(Child, Parent)
: проверяет, является ли класс потомком другого класса.