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

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.