python / 2.7.15 / all / library-bastion.html

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

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

在版本 2.3 中更改:禁用模块。

Note

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

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

  • Bastion. Bastion(* object * [,* filter * [,* name * [,* class *]]])
    • 保护对象* object ,返回对象的堡垒。任何访问对象属性之一的try都必须由 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()