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

Содержимое удалено Содержимое добавлено
→‎Различные замечания: пунктуация, опечатки
Строка 2615:
<source lang="python">class ИмяПроизводногоКласса(имямодуля.ИмяБазовогоКласса):</source>
 
Использование определения производного класса проходит таким же образом, как и базового. Базовый класс полностью сохраняется по завершению конструирования объекта-класса. Такой метод используется для разрешения ссылок на атрибуты<ref>''(Прим. перев.)'' ''Resolving attribute references'' {{ref-en}} - разрешение (поиск значений) ссылок на атрибуты.</ref>: если запрошенный атрибут не был найден в самом классе, поиск продолжается в базовом классе. Правило применяется рекурсивно, если базовый класс сам является производным от некоторого другого класса.
 
В создании экземпляров производных классов нет ничего особенного: <code>DerivedClassNameИмяПроизводногоКласса()</code> создаёт новый экземпляр класса. Ссылки на методы разрешаются следующим образом: производится поиск соответствующего атрибута класса (спускаясь вниз по цепочке базовых классов, если необходимо) и ссылка на метод считается корректной, если она порождает объект-функцию.
 
Производные классы могут перегружать методы своих базовых классов. Поскольку у методов нет особых привилегий при вызове других методов того же объекта, метод базового класса, вызывающий другой метод, определённый в этом же классе, может закончить на вызове метода производного класса, его перегружающего. (Для программистов на C++: все методы в Python фактически виртуальны.)
 
При перегрузке метода в производном классе возможна не только замена действия метода базового класса с тем же именем, но и его расширение. Существует простой способ вызвать метод базового класса прямым образом: просто вызовите "<code>ИмяБазовогоКласса.имяметода(self, аргументы)</code>". Такой способоспособ будет неожиданно полезным и для клиентов. (Обратите внимание, что он работает только если базовый класс определён и импортирован прямо в глобальную область видимости.)
 
В языке Python есть две функции, которые работают с наследованием: