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

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