Изучите наследование в Python на примерах
Python — это простой в изучении язык программирования, который поддерживает как процедурный, так и объектно-ориентированный подходы программирования. В объектно-ориентированном программировании одной из таких концепций является наследование. Поскольку повторное использование кода является сильной стороной наследования, оно полезно в широком спектре приложений при работе с Python.
Что такое наследование?
Наследование относится к процессу передачи свойств родительского класса дочернему. Это идея OOP. Ниже приведены некоторые преимущества наследования.
- Возможность повторного использования кода — вместо того, чтобы писать один и тот же код снова и снова, мы можем просто унаследовать необходимые нам свойства в дочернем классе.
- Он изображает реальные отношения между родительскими и дочерними классами.
- Он имеет транзитивную природу. Если дочерний класс наследует свойства родительского класса, то все подклассы дочернего класса также унаследуют свойства родительского класса.
Ниже приведен простой пример наследования в Python:
класс Животное(объект):
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
def __init__(сам, имя, ноги):
self.name = имя
self.legs = ноги
def getName(self):
вернуть себя.имя
определение getLegs(self):
вернуть себя.ноги
def isMammal(self):
вернуть Ложь
класс Млекопитающие(Животные):
def isMammal(self):
вернуть Истину
годы = Животное(“Ящерица”, 4)
print(ani.getName(), ani.getLegs(), ani.isMammal())
ani = Млекопитающее(“Собака”, 4)
print(ani.getName(), ani.getLegs(), ani.isMammal())
Выход
Ящерица 4 Ложь
Собака 4 Правда
Доступ к функции родительского класса можно получить с помощью объекта дочернего класса в предыдущей программе.
Подклассификация
Подклассификация — это процесс вызова функции Object() { (native code) } родительского класса путем упоминания имени родительского класса в объявлении дочернего класса. Подклассификация — это то, как дочерний класс идентифицирует свой родительский класс.
Функция инициализации
Каждый раз, когда класс используется для создания объекта, вызывается функция __init__(). Когда мы добавляем функцию __init__() к родительскому классу, дочерний класс больше не сможет наследовать функцию __init__() от родительского класса. Функция __init__() дочернего класса переопределяет функцию __init__() родительского класса.
класс Животное:
def __init__(сам, звук):
сам.звук = звук
def animal_sound(self):
print('Звук животного – ', self.sound)
p = Животное('Лук Лук')
p.звук_животного()
Выход
Звук животного — «Бау-бау».
Типы наследования
В Python существует четыре типа наследования, основанные на количестве задействованных дочерних и родительских классов.
Единичное наследование
Когда только один родительский класс наследуется дочерним классом.
класс Животное:
def function1(self):
print(“Функция находится в родительском классе.” )
класс Собака(Животное):
def function2(self):
print(“Функция находится в дочернем классе.” )
объект = Собака()
объект.функция1()
объект.function2()
Выход:
Функция находится в родительском классе.
Функция находится в дочернем классе.
Множественное наследование
Когда дочерний класс наследует от нескольких родительских классов.
класс Мобильный_Телефон:
мобильное_имя = “”
def мобильный_телефон(self):
print(self.mobile_name)
класс ПК:
имя_компьютера = “”
def pc(self):
print(self.имя_компьютера)
класс Планшет (Мобильный_Телефон, ПК):
def особенности(self):
print(“Набор функций 1 :”, self.mobile_name)
print(“Набор функций 2 :”, self.pc_name)
f1 = Планшет()
f1.mobile_name = “Samsung Note 7”
f1.pc_name = “ASUS Vivobook 3”
f1.особенности()
Выход:
Набор функций 1: Samsung Note 7
Набор функций 2: ASUS Vivobook 3
Многоуровневое наследование
Когда один детский класс берет на себя роль родительского класса для другого детского класса.
класс Старый_Компьютер:
def __init__(self, old_computername):
self.old_computername = старое_имя_компьютера
класс Ретро_Компьютер(Старый_Компьютер):
def __init__(self, retro_computername, old_computername):
self.retro_computername = ретро_computername
Старый_компьютер.__init__(self, old_computername)
класс Новый_Компьютер(Ретро_Компьютер):
def __init__(self, new_computername, retro_computername, old_computername):
self.new_computername = новое_имя_компьютера
Retro_Computer.__init__(self, retro_computername, old_computername)
def display_name(self):
print('Имя старого компьютера :', self.old_computername)
print(“Имя ретро-компьютера :”, self.retro_computername)
print(“Новое имя компьютера :”, self.new_computername)
n1= Новый_Компьютер('Машина Тьюринга', 'Machintosh', 'HP Pavillion')
print(n1.old_computername)
n1.отображаемое_имя()
Выход:
Павильон HP
Старое имя компьютера: HP Pavilion
Имя ретро-компьютера: Macintosh
Новое имя компьютера: Машина Тьюринга
Иерархическое наследование
Многократное наследование от одного и того же базового или родительского класса называется иерархическим наследованием.
класс Животное:
def function1(self):
print(“Функция находится в родительском классе.” )
класс Собака(Животное):
def function2(self):
print(“Функция находится в классе собак.” )
класс Кот(Животное):
def function3(self):
print(“Функция находится в классе cat.” )
объект1 = Собака()
объект2 = Кот()
объект1.функция1()
объект1.функция2()
объект2.функция1()
объект2.функция3()
Выход:
Функция находится в родительском классе.
Функция относится к классу собак.
Функция находится в родительском классе.
Функция принадлежит классу cat.
Гибридное наследование
Несколько периодов наследования в одном приложении при гибридном наследовании.
класс Животное:
def function1(self):
print(“Функция с Animal.”)
класс Собака(Животное):
def function2(self):
print(“Функция с собакой.” )
класс Кот(Животное):
def function3(self):
print(“Функция с Cat.”)
класс Бегемот(Собака, Животное):
def function4(self):
print(“Функция с Бегемотом.”)
объект = Бегемот()
объект.функция1()
объект.function2()
Выход:
Функция связана с Животным.
Функция связана с Собакой.
Функция Python Surer()
Мы можем использовать функцию super для вызова метода из родительского класса.
класс Животное():
def __init__(сам, имя):
print(имя, “является животным”)
класс isMammal(Животное):
def __init__(self, isMammal_name):
print(isMammal_name, “рожает детенышей”)
super().__init__(isMammal_name)
класс isReptile(Животное):
def __init__(self, isReptile_name):
print(isReptile_name, “принадлежит к семейству ящериц!”)
super().__init__(isReptile_name)
Брауни = isMammal(“Собака”)
Выход:
Собака рожает детенышей
Собака — это животное.
Переопределение метода Python
В Pythоn вы можете переопределить метод. Рассмотрим следующий пример.
класс Животное():
определение __init__(self):
self.value = “Внутри класса Animal”
определение шоу(self):
print(self.value)
класс Собака(Животное):
определение __init__(self):
self.value = “Внутри класса Dog”
определение шоу(self):
print(self.value)
obj1 = Животное()
obj2 = Собака()
obj1.показать()
obj2.показать()
Выход:
Внутри класса Animal
Внутри класса Собаки
Переопределение того же метода в дочернем классе изменяет функциональность метода родительского класса.
Вы рассматриваете профессию в области Data Science? Тогда получите сертификат Data Science Bootcamp уже сегодня!
Станьте экспертом в Python с Simplilearn!
Одной из важнейших концепций ООР является наследование. Оно обеспечивает повторное использование кода, читаемость и передачу свойств, что помогает создавать оптимизированный и эффективный код. Язык программирования Python богат такими концепциями, как наследование. Массовые приложения Python требуют увеличения числа программистов Python на текущем рынке. Зарегистрируйтесь на сертификацию по науке о данных от SimpliLearn, чтобы усовершенствовать свои навыки и ускорить обучение, и вы станете разработчиком Python в кратчайшие сроки.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)