class ParentClass:
def __init__(self, name):
self.name = name
class ChildClass(ParentClass):
def __init__(self, name, age):
super().__init__(name) # Вызов конструктора родительского класса
self.age = age
Создать класс-наследник (дочерний класс) в Python довольно просто. Основная идея заключается в том, что дочерний класс наследует атрибуты (переменные) и методы (функции) от родительского класса (базового класса). Для указания наследования, имя родительского класса указывается в скобках после имени дочернего класса при его определении.
Вот пример:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("Some generic animal sound")
class Dog(Animal):
def __init__(self, name, breed):
# Вызов конструктора родительского класса
super().__init__(name)
self.breed = breed
def speak(self):
print("Woof!")
def bark(self):
print("Bark bark!")
# Пример использования
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # Вывод: Buddy
print(my_dog.breed) # Вывод: Golden Retriever
my_dog.speak() # Вывод: Woof! (переопределенный метод)
my_dog.bark() # Вывод: Bark bark! (метод только в Dog)
my_animal = Animal("GenericAnimal")
my_animal.speak() # Вывод: Some generic animal sound
Разберем пример:
class Animal: - Определяет базовый класс Animal.class Dog(Animal): - Определяет класс Dog, который наследует от Animal. Ключевой момент здесь (Animal).super().__init__(name) - Вызывает конструктор родительского класса Animal, чтобы инициализировать атрибут name. Использование super() позволяет избежать дублирования кода и обеспечивает правильную инициализацию наследованных атрибутов. Это необходимо, если дочерний класс определяет свой конструктор (__init__).self.breed = breed - Добавляет атрибут breed, специфичный для класса Dog.def speak(self): - Переопределяет метод speak, унаследованный от Animal. Теперь при вызове my_dog.speak() будет выполняться метод speak класса Dog, а не Animal.def bark(self): - Определяет новый метод bark, который существует только в классе Dog.Ключевые моменты:
super() используется для вызова методов родительского класса. Особенно полезен в конструкторах.speak()).Наследование является одним из основных принципов объектно-ориентированного программирования и позволяет создавать более модульный и поддерживаемый код.