Встроенный Python Super ()
Метод возвращает временный объект суперкласса, чтобы помочь вам получить доступ к своим методам. Его цель состоит в том, чтобы избежать использования имени базового класса. Это также позволяет вашему классу наследовать из нескольких базовых классов.
Визуальная идея супер ()
Идея просто: использовать Super ()
Чтобы вызвать методы, определенные в родительских классах – будь то ваш ребенок класс наследует от одного или нескольких базовых классов. Смотрите графику:
Нужно мне вести вас через этот пример? Посмотрите видео объяснения следующим!
Видео супер () на примере
Далее вы узнаете обоих случаях по примеру!
Простой пример 1: Super () с одним наследством
Наследование В объектно-ориентированном программировании позволяет создавать классовую иерархию, где один класс ребенка наследует все методы от другого родительского класса. Это упрощает разработку крупных программных проектов и позволяет избежать избыточного кода. Вы можете узнать больше о концепции наследства в наших Руководство по разговору здесь Отказ
Например, следующий код определяет родительский класс Организм
и детский класс Человек
Отказ Детский класс использует Super ()
Чтобы запустить конструктор метода родительского класса.
class Organism: def __init__(self): print('I live') class Human(Organism): def __init__(self): print('I am human') super().__init__() alice = Human()
Вывод:
I am human I live
Здесь вы называете базовый класс организм, используя следующий код:
super().__init__()
Семантически эквивалентный звонок кода будет:
Organism.__init__(self)
Вы называете __init __ ()
Метод на базовом классе Организм
и передайте ссылку на экземпляр вызова в качестве аргумента. Таким образом, вы также можете изменить внутренние атрибуты Я
экземпляр в конструкторе базового класса.
Однако преимущество использования Super () .__ init __ ()
по сравнению с Parentclass .__ init __ (Self)
Это то, что вы не позвоните в родительский класс явно. Это выгодно, потому что он каникует ребенка из родительского класса. Например, если вы изменили имя Parentclass
к NewParentClass
метод с использованием Super ()
будет превосходить, потому что он все равно будет работать, а метод, использующий Parentclass .__ init __ (Self)
будет бросать ошибку.
Пример 2: Супер () с несколькими наследованием
Один из уникальных функций Python по сравнению с другими языками программирования состоит в том, что это позволяет Многократное наследование Отказ
Многократное наследование означает, что класс может наследовать от нескольких родителей. Например, класс Человек
Может наследовать от двух родительских классов: Организм
и Мыслитель
Отказ Скажем, вы определяете метод Live ()
в организме и думаю ()
в мыслителе. Если человеческий объект наследует от обоих классов, он может позвонить Live ()
и думаю ()
в то же время! Вы используете Super ()
Способ для вызова этих функций:
class Organism: def live(self): print('I live') class Thinker: def think(self): print('I think') class Human(Organism, Thinker): def __init__(self): print('I am human') super().live() super().think() alice = Human()
Вывод:
I am human I live I think
Я должен упомянуть, что в этом примере вы также могли бы назвать Self.Live ()
и self.Том ()
В классе Человек
вместо Super (). Живи ()
и Super (). думаю ()
Отказ Выходность будет одинаковым в обоих случаях. На практике вы бы использовали бывшие для Методы экземпляра и последний за Методы класса Отказ Разница между оба объясняется в нашем руководстве в блоге здесь.
Резюме
Встроенный Python Super ()
Метод возвращает временный объект суперкласса, чтобы помочь вам получить доступ к своим методам. Его цель состоит в том, чтобы избежать использования имени базового класса. Это также позволяет вашему классу наследовать из нескольких базовых классов.
Вы можете погрузиться глубже в некоторые из пособий Super ()
Метод здесь:
- https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods
- https://realpython.com/python-super/
- https://rhettinger.wordpress.com/2011/05/26/super-considered-super/
Если вы потратили час, изучающие все три ресурса, вы стали Super ()
Суперзвезда – и это поможет вам по всей вашей программированной карьере. Хорошая прибыль в инвестированное время!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.