class BaseClass:
def __init__(self, value):
self.value = value
class 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()
является ключевой для правильной инициализации базовых классов и работы с переопределенными методами.