Автор оригинала: Pankaj Kumar.
Понимание метода Super () в Python
Введение
Сегодня в этом руководстве мы собираемся обсудить Метод Super () в Python Отказ
Перед погружением прямо в тему мы настоятельно рекомендуем пройти учебник по наследству Python.
Как только вы знаете о наследстве в Python, мы можем начать.
Метод Super () в Python
супер
Метод Возвращает прокси-объект, который делегаты метод вызовы на родитель или брат класс Тип Отказ Это полезно для доступа к унаследованным методам, которые были переопределены в классе.
Или просто, он используется для вызова конструктора, то есть __init __ ()
Метод Superclass Отказ
Синтаксис Для использования Super в Python приведен ниже.
super([type[, object-or-type]])
В Python 3.x Версии, мы можем использовать Super без прохождения выше двух параметров. Посмотрите на фрагмент кода ниже.
class C(B): def method(self, arg): super().method(arg)
Здесь C
Это полученный класс, B
Это базовый класс, метод – это пользовательская функция с аргументом arg
Отказ
Как видите, линия Super (). Метод (ARG)
на самом деле эквивалентно Super (C, Self) .method (arg)
в Python 3.x Отказ Это не допускается в Python 2.x Отказ Следовательно, использование супер есть немного сложно.
Используя Super ()
Рассмотрим ниже приведенный ниже пример.
class Demo: a = 0 b = 0 c = 0 def __init__(self,A,B,C): self.a = A self.b = B self.c = C def display(self): print(self.a, self.b, self.c) class Newdemo(Demo): d = 0 def __init__(self,A,B,C,D): self.a = A self.b = B self.c = C self.d = D def display(self): print(self.a, self.b, self.c,self.d) B1 = Demo(100,200,300) print("Contents of Base Class:") B1.display() D1 = Newdemo(10,20,30,40) print("Contents of Derived Class:") D1.display()
Выход :
В приведенном выше примере классы, полученные из базового класса Демо
не были реализованы эффективно или надежно.
Полученный класс Newdemo
Явно инициализирует значение полей A, B и C базового класса. Такое же дублирование кода найден при инициализации тех же полей в базовом классе, Демо
тоже.
Этот процесс неэффективно. Это подразумевает, что подкласс Должен быть предоставлен доступ к членам A Superclass Отказ
Следовательно, всякий раз, когда подкласс должен ссылаться на его непосредственный супер класс, супер
входит в картину.
Super (), чтобы позвонить в Super Class Constructor
Теперь давайте применим Super ()
Способ приведенного выше примера.
class Demo: a = 0 b = 0 c = 0 def __init__(self,A,B,C): self.a = A self.b = B self.c = C def display(self): print(self.a, self.b, self.c) class Newdemo(Demo): d = 0 def __init__(self,A,B,C,D): self.d = D super().__init__(A,B,C) #super to call super Class #The __init__() Method def display(self): print(self.a, self.b, self.c,self.d) B1 = Demo(12,34,56) print("Contents of Base Class:") B1.display() D1 = Newdemo(11,22,33,44) print("Contents of Derived Class:") D1.display()
Выход :
Здесь полученный класс Newdemo
называет Super ()
С аргументами А , B и C Отказ Это вызывает конструктор __init__
базового класса, то есть Демо
быть названным. Это инициализирует значения А , B и C Отказ Следовательно, Newdemo
Класс больше не инициализирует сам ценности.
Использование Super в Python 2.x
синтаксис позвонить в супер
Класс конструктор в Python 2.x дано ниже,
super(Derived_Class_Name, self).__init__(Parameters_of_Super_Class_Constructor)
Следовательно, мы должны внести некоторые незначительные изменения в приведенном выше примере, если мы хотим использовать его в Python 2 Отказ
Во-первых, нам нужно поставить объект
в базовом классе, как показано ниже.
class Demo(object): ...#other statements
А во-вторых, пройти Newdemo
и Я
На сайте Super Class Call. Как это.
super(Newdemo,self).__init__(A,B,C) #super to call super Class ... #The __init__() Method
Почему нам нужно супер ()
В случае Одиночное наследование С родительским и классом потомства, супер
Функция используется для неявно, обратитесь к родительскому классу, не называя его прямо. Это делает код более эффективным, поддерживаемым и надежным в природе.
Оконемся, для Многоуровневое наследование , супер
Способ можно использовать для неявного ссылки на немедленный суперкласс. Это снова заставляет код проще понять и очень поддерживаться.
Заключение
Так что в этом руководстве мы поняли понятие Метод Super () в Python , его использование и нужно.
Для любых дополнительных вопросов не стесняйтесь комментировать ниже.
использованная литература
- Python Super – журнал Dev Post,
- Что делает «супер» в Python? – Вопрос Stackoverflow,
- Python Super – Официальная документация.