Основная идея наследования в объектно-ориентированном программировании заключается в том, что класс может наследовать характеристики другого класса. Класс, который наследует другой класс, называется дочерним классом или производным классом, и класс, который дает наследие, называется родительским, или основным.
# Создание класса Vehicle
class Vehicle:
def vehicle_method(self):
print("Это родительский метод из класса Vehicle")
# Создание класса Car, который наследует Vehicle
class Car(Vehicle):
def car_method(self):
print("Это метод из дочернего класса")
car_a = Car()
car_a.vehicle_method() #Это родительский метод из класса Vehicle
car_a.car_method() #Это метод из дочернего класса
В Python, родительский класс может иметь несколько дочерних, и, аналогично, дочерний класс может иметь несколько родительских классов. Давайте рассмотрим первый сценарий. Выполним следующий скрипт:
# создаем класс Vehicle
class Vehicle:
def vehicle_method(self):
print("Это родительский метод из класса Vehicle")
# создаем класс Car, который наследует Vehicle
class Car(Vehicle):
def car_method(self):
print("Это дочерний метод из класса Car")
# создаем класс Cycle, который наследует Vehicle
class Cycle(Vehicle):
def cycleMethod(self):
print("Это дочерний метод из класса Cycle")
car_a = Car()
car_a.vehicle_method() #Это родительский метод из класса Vehicle
car_a.car_method() #Это метод из дочернего класса Car
car_a = Cycle()
car_a.vehicle_method() #Это родительский метод из класса Vehicle
car_a.cycleMethod() #Это метод из дочернего класса Cycle
Таким же образом, дочерний класс может иметь несколько родительских. Посмотрим на пример:
class Camera:
def camera_method(self):
print("Это родительский метод из класса Camera")
class Radio:
def radio_method(self):
print("Это родительский метод из класса Radio")
class CellPhone(Camera, Radio):
def cell_phone_method(self):
print("Это дочерний метод из класса CellPhone")
cell_phone_a = CellPhone()
cell_phone_a.camera_method() #Это родительский метод из класса Camera
cell_phone_a.radio_method() #Это родительский метод из класса Radio
cell_phone_a.cell_phone_method() #Это дочерний метод из класса CellPhone