30.2. Bastion – Ограничение доступа к объектам¶Bastion – Restricting access to objects
Устарело с версии 2.6: Модуль Bastion удалён в Python 3.
Изменено в версии 2.3: Модуль отключён.
Примечание
Документация оставлена на месте, чтобы помочь при чтении старого кода, который использует этот модуль.
Согласно словарю, бастион – это «укреплённая площадь или позиция», или
«нечто, считающееся оплотом». Это подходящее название для данного
модуля, который предоставляет способ запретить доступ к определённым атрибутам
объекта. Его всегда следует использовать с модулем rexec, чтобы разрешить
программам в ограниченном режиме доступ к определённым безопасным атрибутам объекта,
одновременно запрещая доступ к другим, небезопасным атрибутам.
-
Bastion.Bastion(object[, filter[, name[, class]]])¶ Защищает объект объект, возвращая для него бастион. Любая попытка получить доступ к одному из атрибутов объекта должна быть одобрена функцией фильтр; если доступ запрещён, будет вызвано исключение
AttributeError.Если указан, фильтр должен быть функцией, которая принимает строку, содержащую имя атрибута, и возвращает true, если доступ к этому атрибуту разрешён; если фильтр возвращает false, доступ запрещён. Фильтр по умолчанию запрещает доступ к любой функции, начинающейся с подчёркивания (
'_'). Строковое представление бастиона будет равно<Bastion for name>, если задано значение для имя; в противном случае будет использованоrepr(object).класс, если указан, должен быть подклассом
BastionClass; подробнее см. код вbastion.py. Переопределение стандартногоBastionClassредко требуется.
-
class
Bastion.BastionClass(getfunc, name)¶ Класс, который фактически реализует объекты-бастионы. Это стандартный класс, используемый
Bastion(). Параметр getfunc – это функция, которая возвращает значение атрибута, который должен быть открыт для окружения с ограниченным выполнением при вызове с именем атрибута в качестве единственного параметра. имя используется для построенияrepr()экземпляраBastionClass.