python super - Метод super() в Python
Primary tabs
Метод super() в Python
В Python есть метод super(), который обычно применяется к объектам.
Его главная задача это возможность использования в классе потомке, методов класса-родителя.
По аналогии с PHP нечто вроде
parrent::__construct(); // "аналогичный" вызов в PHP
Смотрим пример:
# Родительский класс class A(object): def __init__(self): print(u'конструктор класса A') # Потомок класса А class B(A): def __init__(self): print(u'конструктор класса B') super(B,self).__init__()
Смысл примера заключается в том, что Python автоматически (сам по себе) не запустит родительский конструктор, поскольку мы его переопределили в классе B… Поэтому методом super() мы явно вызываем родительский конструктор.
Кто-то посчитает код избыточным, ведь приходиться ссылаться на текущий класс чтобы запустить методы родителя, как стало известно в Python версии 3.0 это проблема решена, метод super() будет вызываться без аргументов.
Кстати существует альтернативная реализация тех же самых действий, как еще ее называют в старом стиле:
class A: def __init__(self): print(u'конструктор класса A') class B(A): def __init__(self): print(u'конструктор класса B') A.__init__(self)
ИСТОЧНИК:
(я скопировал текст, так как сайт "лежал" и не известно было - поднимется ли): http://pkolt.ru/pages/22/
- Log in to post comments
- 63641 reads