Python/Учебник Python 2.6: различия между версиями
Содержимое удалено Содержимое добавлено
→Объекты-методы: пунктуация |
→Различные замечания: пунктуация, опечатки |
||
Строка 2563:
=== Различные замечания ===
Атрибуты-данные переопределяют атрибуты-методы с тем же именем; для того,
Методы могут ссылаться на атрибуты-данные также, как и обычные пользователи («клиенты») объекта. Другими словами, использование классов не окажется удобным для разработки глубоко абстрактных типов данных. По факту, в Python нет ничего, вынуждающего вас скрывать данные — всё это основано на соглашениях. (С другой стороны, реализация Python, написанная на C, может полностью скрывать детали разработки и, если нужно, контролировать доступ к объекту; это можно использовать в расширениях для Python, написанных на C.)
Клиенты должны использовать атрибуты-данные с осторожностью — они могут нарушить некоторые неизменные положения, на которые опираются методы, за счёт изменения используемых ими атрибутов-данных. Заметьте, что клиенты могут добавлять собственные атрибуты-данные к объектам-экземплярам, не нарушая работы методов, поскольку конфликты имён исключаются — опять же, соглашение об именовании может избавить вас от головной боли и в этих случаях.
Строка 2585:
h = g</source>
Теперь <code>f</code>, <code>g</code> и <code>h</code> — все являются атрибутами класса <code>C</code>, ссылающимися на объекты-функции, и, следовательно, все они являются методами экземпляров <code>C</code> — <code>h</code> становится полностью эквивалентен <code>g</code>. Заметьте, что такая практика обычно служит лишь тому, чтобы запутать читателя программы.
Методы могут вызывать другие методы
<source lang="python">class Bag:
Строка 2598:
self.add(x)</source>
Методы могут ссылаться на глобальные имена таким же образом, как и обычные функции. Глобальная область видимости, связанная с методом, — это модуль, содержащий определение класса. (Сам класс никогда не используется в качестве глобальной области видимости!) В то время, как одни редко находят причины для использования глобальных данных в методах, существует множество вполне законных способов использования глобальной области видимости: для примера, функции и модули, импортированные в глобальную область видимости, могут использоваться методами
=== Наследование ===
|