Python/Учебник Python 2.6: различия между версиями
Содержимое удалено Содержимое добавлено
Dnikitin (обсуждение | вклад) м →Различные замечания: орфография |
Dnikitin (обсуждение | вклад) м →Наследование: орфография |
||
Строка 2612:
В создании экземпляров производных классов нет ничего особенного: <code>DerivedClassName()</code> создаёт новый экземпляр класса. Ссылки на методы разрешаются следующим образом: производится поиск соответствующего атрибута класса (спускаясь вниз по цепочке базовых классов, если необходимо) и ссылка на метод считается корректной, если она порождает объект-функцию.
Производные классы могут перегружать методы своих базовых классов. Поскольку у методов нет особых
При перегрузке метода в производном классе возможна не только замена действия метода базового класса с тем же именем, но и его расширение. Существует простой способ вызвать метод базового класса прямым образом: просто вызовите "<code>ИмяБазовогоКласса.имяметода(self, аргументы)</code>". Такой способо будет неожиданно полезным и для клиентов. (Обратите внимание, что он работает только если базовый класс определён и импортирован прямо в глобальную область видимости.)
Строка 2638:
Для классов в новом стиле, порядок разрешения методов<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>) порядок поиска так способом, что тот сохраняет указанный слева-направо порядок для каждого класса, который вызывает каждый родительский класс только единожды и является монотонным (значит, класс можно сделать наследником, не взаимодействуя с порядком
=== Приватные переменные ===
|