Документация Python неофициальный перевод

bastion.md

30 строк · 4.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/bastion.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 30.2. [`Bastion`](https://python-all.ru/2.7/library/bastion.html#module-Bastion) – Ограничение доступа к объектам89Устарело с версии 2.6: Модуль [`Bastion`](https://python-all.ru/2.7/library/bastion.html#module-Bastion) удалён в Python 3.1011Изменено в версии 2.3: Модуль отключён.1213> **Примечание**14>15> Документация оставлена на месте, чтобы помочь при чтении старого кода, который использует этот модуль.1617Согласно словарю, бастион – это «укреплённая площадь или позиция», или «нечто, считающееся оплотом». Это подходящее название для данного модуля, который предоставляет способ запретить доступ к определённым атрибутам объекта. Его всегда следует использовать с модулем [`rexec`](https://python-all.ru/2.7/library/rexec.html#module-rexec), чтобы разрешить программам в ограниченном режиме доступ к определённым безопасным атрибутам объекта, одновременно запрещая доступ к другим, небезопасным атрибутам.1819#### `Bastion.Bastion(object[, filter[, name[, class]]])`2021Защищает объект *объект*, возвращая для него бастион. Любая попытка получить доступ к одному из атрибутов объекта должна быть одобрена функцией *фильтр*; если доступ запрещён, будет вызвано исключение [`AttributeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.AttributeError).2223Если указан, *фильтр* должен быть функцией, которая принимает строку, содержащую имя атрибута, и возвращает true, если доступ к этому атрибуту разрешён; если *фильтр* возвращает false, доступ запрещён. Фильтр по умолчанию запрещает доступ к любой функции, начинающейся с подчёркивания (`'_'`). Строковое представление бастиона будет равно `<Bastion for name>`, если задано значение для *имя*; в противном случае будет использовано `repr(object)`.2425*класс*, если указан, должен быть подклассом [`BastionClass`](https://python-all.ru/2.7/library/bastion.html#Bastion.BastionClass); подробнее см. код в `bastion.py`. Переопределение стандартного [`BastionClass`](https://python-all.ru/2.7/library/bastion.html#Bastion.BastionClass) редко требуется.2627#### `class Bastion.BastionClass(getfunc, name)`2829Класс, который фактически реализует объекты-бастионы. Это стандартный класс, используемый [`Bastion()`](https://python-all.ru/2.7/library/bastion.html#module-Bastion). Параметр *getfunc* – это функция, которая возвращает значение атрибута, который должен быть открыт для окружения с ограниченным выполнением при вызове с именем атрибута в качестве единственного параметра. *имя* используется для построения [`repr()`](https://python-all.ru/2.7/library/functions.html#repr) экземпляра [`BastionClass`](https://python-all.ru/2.7/library/bastion.html#Bastion.BastionClass).30