30.2. "Bastion" --- オブジェクトに対するアクセスの制限
******************************************************

バージョン 2.6 で非推奨: "Bastion" モジュールは Python 3 で削除されま
した。

バージョン 2.3 で変更: モジュールは無効化され、使えなくなりました。

注釈: このドキュメントは、Bastion モジュールを使用している古いコード
  を読む 際の参照用として残されています。

辞書によると、バスチョン (bastion、要塞) とは、"防衛された領域や地点"
、または "最後の砦と考えられているもの" であり、オブジェクトの特定の属
性へのアクセスを禁じる方法を提供するこのモジュールにふさわしい名前です
。制限モード下のプログラムに対して、あるオブジェクトにおける特定の安全
な属性へのアクセスを許可し、かつその他の安全でない属性へのアクセスを拒
否するには、要塞オブジェクトは常に "rexec" モジュールと共に使われなけ
ればなりません。

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

   オブジェクト *object* を保護し、オブジェクトに対する要塞オブジェク
   トを返します。オブジェクトの属性に対するアクセスの試みは全て、
   *filter* 関数によって認可されなければなりません; アクセスが拒否され
   た場合 "AttributeError" 例外が送出されます。

   *filter* が存在する場合、この関数は属性名を含む文字列を受理し、その
   属性に対するアクセスが許可される場合には真を返さなければなりません;
   *filter* が偽を返す場合、アクセスは拒否されます。標準のフィルタは、
   アンダースコア ("'_'") で始まる全ての関数に対するアクセスを拒否しま
   す。 *name* の値が与えられた場合、要塞オブジェクトの文字列表現は
   "<Bastion for name>" になります; そうでない場合、 "repr(object)" が
   使われます。

   *class* が存在する場合、 "BastionClass" のサブクラスでなくてはなり
   ません; 詳細は "bastion.py" のコードを参照してください。
   "BastionClass" の標準設定を上書きする必要はほとんどないはずです。

class Bastion.BastionClass(getfunc, name)

   実際に要塞オブジェクトを実装しているクラスです。このクラスは
   "Bastion()" によって使われる標準のクラスです。 *getfunc* 引数は関数
   で、唯一の引数である属性の名前を与えて呼び出した際、制限された実行
   環境に対して、開示すべき属性の値を返します。 *name* は
   "BastionClass" インスタンスの "repr()" を構築するために使われます。
