Метод super() в Python

В Python есть метод super(), который обычно применяется к объектам. Его главная задача это возможность использования в классе потомке, методов класса-родителя. По аналогии с PHP5 нечто вроде parrent::__construct()

Смотрим пример:

# Родительский класс

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)
Сбор подписей на Sborgolosov.ru