Python/Учебник Python 2.6: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 2645:
Для классов в новом стиле, порядок разрешения методов<ref>''(Прим. перев.)'' другими словами — поиска корректной привязки для метода</ref> (<tt>method resolution order</tt>) меняется динамически, чтобы обеспечить возможность совместных вызовов <code>super()</code>. Этот способ известен в некоторых других языках с поддержкой множественного наследования как "вызов-следующего-метода" („<tt>call-next-method</tt>“) и имеет больше возможностей, чем вызов родительского метода в языках с единичным наследованием.
 
В случае классов в новом стиле, динамическое упорядочивание (<tt>dynamic ordering</tt>) имеет большую важность, поскольку все вариации множественного наследования проявляют в себе эффект ромбовых отношений (когда как минимум один родительский класс может быть доступен различными путями из низшего в иерархии класса). Например, все классы нового стиля наследуются от <code>object</code>, так что множественное наследование в любом виде предоставляет более одного пути для того, чтобы достичь <code>object</code>. Чтобы защитить базовые классы от двойных и более запросов, динамический алгоритм «выпрямляет» (<tt>linearizes</tt>) порядок поиска тактаким способом, что тот сохраняет указанный слева-направо порядок для каждого класса, который вызывает каждый родительский класс только единожды и является монотонным (значит, класс можно сделать наследником, не взаимодействуя с порядком предшествования его родителей). Обобщённые вместе, эти свойства позволяют разрабатывать надёжные и расширяемые классы, используя множественное наследование. С подробностями можно ознакомиться по этой ссылке: http://www.python.org/download/releases/2.3/mro/ ([[Python — Порядок разрешения методов|перевод]]).
 
=== Приватные переменные ===