Разделы инструкций

В сети

Пользователей: 133
Из них просматривают:
Аналоги: 45. Даташиты: 15. Инструкции: 8. Новости: 27. Обзор: 1. Обратная связь: 1. Остальное: 11. Программы: 2. Производители: 1. Профиль пользователя: 1. Расчёты: 1. Торрент: 4. Форум: 12. Чат: 4.
Участников: 6
Гостей: 127

an , alex01981 , Google , grom , wolf170571 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

9.5 Наследование

Конечно, особенность языка не достойна называться "классом" без поддержки наследования. Определение производного класса с именем производный_класс выглядит следующим образом:

 

class производный_класс(базовый_класс):
    инструкция1
    .
    .
    .
    инструкцияN

 

Базовый класс (базовый_класс) должен быть определён в области видимости, в которой находится определение производного класса (производный_класс). Вместо имени базового класса можно использовать выражение, например, если базовый класс определён в другом модуле:

 

class производный_класс(модуль.базовый_класс):

 

Определение производного класса выполняется так же, как и определение базового класса. Сконструированный объект-класс помнит базовый — он используется для разрешения имен атрибутов: если запрошенный атрибут не найден в классе, поиск продолжается в базовом классе. Это правило применяется рекурсивно, если базовый класс, в свою очередь, является производным от другого класса. В создании экземпляра производного класса нет ничего особенного: производный_класс() порождает новый экземпляр класса.

Производные классы могут переопределить методы базовых классов. Метод базового класса, вызывающего другой определенный для него метод, может, на самом деле, вызывать метод производного класса, переопределившего этот метод (говоря в терминах C++, все методы в языке Python являются виртуальными).

В языке Python есть ограниченная поддержка множественного наследования. Определения класса с несколькими базовыми классами выглядит следующим образом:

 

class производный_класс(базовый_класс1, базовый_класс2, базовый_класс3):
    инструкция1
    .
    .
    .
    инструкцияN

 

Единственное правило, необходимое для объяснения семантики, — правило разрешения имён атрибутов. Поиск производится сначала в глубину, затем слева направо. Таким образом, если атрибут не найден в производный_класс, то он ищется сначала в базовый_класс1, затем (рекурсивно) в базовых классах класса базовый_класс1 и только потом в базовый_класс2 и т.д. (Для некоторых людей кажется более естественным другой порядок разрешения имен атрибутов — сначала в классах базовый_класс1, базовый_класс2, базовый_класс3 и только потом в базовых классах класса базовый_класс1. Однако в этом случае возникает зависимость результата от реализации каждого из базовых классов. С принятым же правилом, нет разницы между прямыми и унаследованными атрибутами базовых классов.)

3
<< Меню >>  
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы

Интересно

Контактные щетки для микродеталей, электробритв и т.п. можно выпилить из графитовых стержней от старых батареек питания.

Похожие инструкции