Домой

Последняя активность

  

Метод super() в Python

PyDeKolt avatar PyDeKolt (0) [#] (27.05.2013 / 17:58)
В Python есть метод super(), который обычно применяется к объектам. Его главная задача это возможность использования в классе потомке, методов класса-родителя. По аналогии с PHP5 нечто вроде parrent::__construct()

Смотрим пример:
  1. # Родительский класс
  2. class A(object):
  3. def __init__(self):
  4. print(u'конструктор класса A')
  5. # Потомок класса А
  6. class B(A):
  7. def __init__(self):
  8. print(u'конструктор класса B')
  9. super(B,self).__init__()

Смысл примера заключается в том, что Python не запустит родительский конструктор, поскольку мы его переопределили в классе B… Поэтому методом super() мы явно вызываем родительский конструктор. Кто-то посчитает код избыточным, ведь приходиться ссылаться на текущий класс чтобы запустить методы родителя, как стало известно в Python версии 3.0 это проблема решена, метод super() будет вызываться без аргументов.

Кстати существует альтернативная реализация тех же самых действий, как еще ее называют в старом стиле:
  1. class A:
  2. def __init__(self):
  3. print(u'конструктор класса A')
  4. class B(A):
  5. def __init__(self):
  6. print(u'конструктор класса B')
  7. A.__init__(self)

* Самоучитель изучение Python
  Всего: 1

Зарегистрируйтесь и сможете комментировать все темы. Кнопочка вверху
Фильтр по автору
Скачать тему

В Форум

Новые вверху
waplog Рейтинг@Mail.ru
Statok.nettop-sid.ru
Яндекс.Метрика