30.2. Bastion — 限制对对象的访问 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/bastion
跳转至:导航、​搜索

30.2. 堡垒 — 限制对对象的访问

自 2.6 版起已弃用:Bastion 模块已在 Python 3 中删除。


在 2.3 版更改:禁用模块。


笔记

文档已保留,以帮助阅读使用该模块的旧代码。


根据字典,堡垒是“一个设防的区域或位置”,或“被认为是据点的东西”。 这是该模块的合适名称,它提供了一种禁止访问对象的某些属性的方法。 它必须始终与 rexec 模块一起使用,以便允许受限模式程序访问对象的某些安全属性,同时拒绝访问其他不安全的属性。

Bastion.Bastion(object[, filter[, name[, class]]])

保护对象object,为对象返回一个堡垒。 任何访问对象属性之一的尝试都必须得到 filter 函数的批准; 如果访问被拒绝,将引发 AttributeError 异常。

如果存在,filter 必须是一个接受包含属性名称的字符串的函数,如果允许访问该属性,则返回 true; 如果 filter 返回 false,则拒绝访问。 默认过滤器拒绝访问任何以下划线开头的函数 ('_')。 如果提供 name 的值,堡垒的字符串表示将是 <Bastion for name>; 否则,将使用 repr(object)

class,如果存在,应该是 BastionClass 的子类; 详见bastion.py中的代码。 很少需要覆盖默认的 BastionClass

class Bastion.BastionClass(getfunc, name)
实际实现堡垒对象的类。 这是 Bastion() 使用的默认类。 getfunc 参数是一个函数,它返回一个属性的值,当以属性名称作为唯一参数调用时,该属性应该暴露给受限执行环境。 name 用于构造 BastionClass 实例的 repr()