class BaseClass: def __init__(self, value): self.value = valueclass DerivedClass(BaseClass): def __init__(self, value, extra): super().__init__(value) # Вызов конструктора базового класса self.extra = extra
Для создания базового класса в Python, достаточно просто объявить класс, используя ключевое слово class, и определить его атрибуты и методы. Затем, чтобы унаследовать этот базовый класс в другом классе, нужно указать имя базового класса в скобках после имени нового класса при его объявлении. Это создаст отношение "родитель-потомок" между классами, где новый класс (дочерний) наследует свойства и поведение базового класса (родительского).
Пример:
# Базовый класс
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("Животное издает звук")
# Дочерний класс, наследующий Animal
class Dog(Animal):
def __init__(self, name, breed):
# Вызываем конструктор базового класса для инициализации общих атрибутов
super().__init__(name)
self.breed = breed
# Переопределяем метод speak для конкретного класса
def speak(self):
print("Гав!")
# Создаем экземпляры классов
animal = Animal("Безымянное животное")
dog = Dog("Бобик", "Дворняжка")
# Вызываем методы
animal.speak() # Вывод: Животное издает звук
dog.speak() # Вывод: Гав!
print(dog.name) # Вывод: Бобик
print(dog.breed) # Вывод: Дворняжка
Пояснения:
class Animal: - Объявление базового класса Animal.class Dog(Animal): - Объявление дочернего класса Dog, наследующего от Animal. В скобках указывается имя родительского класса.super().__init__(name) - В конструкторе дочернего класса вызывается конструктор родительского класса с помощью функции super(). Это необходимо для инициализации атрибутов, унаследованных от базового класса. В данном случае, инициализируется атрибут name, определенный в Animal.speak() переопределен в классе Dog, чтобы выводить "Гав!" вместо "Животное издает звук". Если метод не переопределен, то используется реализация из базового класса.Наследование позволяет создавать иерархию классов, повторно использовать код и избегать дублирования, делая структуру программы более организованной и расширяемой. Функция super() является ключевой для правильной инициализации базовых классов и работы с переопределенными методами.