Смотрим пример:
- # Родительский класс
- 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)
* Самоучитель изучение Python