Формирование проблемы: вызывая родительские методы
Данный
- Родитель Класс
п
- Ребенок Класс
C
что наследует отп
- Класс Метод
P.my_method ()
Определяется на родительскомп
Проблема : В рамках метода класса C
, как позвонить родителям методом P.my_method ()
?
Пример : Рассмотрим следующий пример, где вы создаете родитель и детский класс. Вы хотите позвонить my_method (
) изнутри дочерних классов ‘ child_method (
).
class P: '''Parent Class''' def my_method(self): print('hi') class C(P): '''Child Class''' def child_method(self): # ... Call my_method() of parent P ... # TODO # Create a child child = C() child.child_method() # OUTPUT: hi
Итак, как позвонить родительским методам? Давайте погрузимся прямо в наш первый метод!
Способ 1: Используйте самостоятельную ссылку на доступ к родительскому методу
Ребенок наследует все методы и атрибуты от родителя. Таким образом, чтобы получить доступ к родительскому методу, вы можете использовать Я
ссылка, переданная аргументом метода ребенка. Например, вы можете позвонить self.carent_method ()
В детском методе доступа к родительскому методу.
Вот пример:
class P: def parent_method(self): print('hi') class C(P): def child_method(self): self.parent_method() child = C() child.child_method()
Выход, действительно:
hi
Однако это только работает, если ребенок не перезаписать метод родителя. Читайте дальше, чтобы узнать, как использовать Super ()
Чтобы справиться с этой проблемой!
Способ 2: Используйте Super () для доступа к способу родителя
Встроенный Python Super ()
Метод возвращает временный объект родительского класса, чтобы помочь вам получить доступ к своим методам. Его цель состоит в том, чтобы избежать использования имени базового класса. Это также позволяет вашему классу наследовать из нескольких базовых классов.
Вот как вы можете позвонить по методу родителей от ребенка, используя Super ()
– Если ребенок перезаписывает тот же метод.
class P: '''Parent''' def my_method(self): print('parent') class C(P): '''Child''' def my_method(self): print('child') def call_parent_method(self): super().my_method() child = C() child.call_parent_method() # parent
Обратите внимание, что если вы не использовали использование Super (). my_method ()
Но self.my_method ()
например, в Метод 1 , Python будет называть методом ребенка, поскольку он перезаписывает метод родителя.
class P: '''Parent''' def my_method(self): print('parent') class C(P): '''Child''' def my_method(self): print('child') def call_parent_method(self): self.my_method() child = C() child.call_parent_method() # child
Вы можете посмотреть видео, чтобы узнать все о Python’s Super ()
Метод:
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.