##
17.1.1 RExec オブジェクト

`RExec` インスタンスは以下のメソッドをサポートします：

`r_eval`( | code)

  code は、Python の式を含む文字列か、あるいはコンパイルされた コードオブジェクトのどちらかでなければなりません。そしてこれらは制限された 環境の `__main__` モジュールで評価されます。式あるいはコード オブジェクトの値が返されます。

`r_exec`( | code)

  code は、1行以上の Python コードを含む文字列か、コンパイルされた コードオブジェクトのどちらかでなければなりません。そしてこれらは、 制限された環境の `__main__` モジュールで実行されます。

`r_execfile`( | filename)

  ファイル filename 内の Python コードを、制限された環境の `__main__` モジュールで実行します。

名前が "`s_`" で始まるメソッドは、"`r_`"で始まる関数と同様ですが、 そのコードは、標準 I/O ストリーム `sys.stdin`、 `sys.stderr` および `sys.stdout` の制限されたバージョンへの アクセスが許されています。

`s_eval`( | code)

  code は、Python 式を含む文字列でなければなりません。そして 制限された環境で評価されます。

`s_exec`( | code)

  code は、1行以上のPython コードを含む文字列でなければなりません。そして 制限された環境で実行されます。

`s_execfile`( | code)

  ファイル filename に含まれた Python コードを制限された環境で 実行します。

`RExec` オブジェクトは、制限された環境で実行されるコードによって 暗黙のうちに呼ばれる、さまざまなメソッドもサポートしなければなりません。 これらのメソッドをサブクラス内でオーバライドすることによって、制限された環境が 強制するポリシを変更します。

`r_import`( | modulename[, globals[, locals[, fromlist]]])

  モジュール modulename をインポートし、もしそのモジュールが 安全でないとみなされるなら、`ImportError` 例外を発生します。

`r_open`( | filename[, mode[, bufsize]])

  `open()` が制限された環境で呼ばれるとき、呼ばれるメソッドです。 引数は `open()`のものと同じであり、ファイルオブジェクト (あるいはファイルオブジェクトと互換性のあるクラスインスタンス)が 返されます。 `RExec`のデフォルトの動作は、任意のファイルを 読み取り用にオープンすることを許可しますが、ファイルに書き込もうとする ことは許しません。より制限の少ない `r_open()`の実装については、 以下の例を見て下さい。

`r_reload`( | module)

  モジュールオブジェクト module を再ロードして、それを再解析し再初期化します。

`r_unload`( | module)

  モジュールオブジェクト moduleをアンロードします (それを制限された環境の `sys.modules` 辞書から取りのぞきます)。

および制限された標準 I/O ストリームへのアクセスが可能な同等のもの：

`s_import`( | modulename[, globals[, locals[, fromlist]]])

  モジュール modulename をインポートし、もしそのモジュールが 安全でないとみなされるなら、`ImportError` 例外を発生します。

`s_reload`( | module)

  モジュールオブジェクト module を再ロードして、それを再解析し再初期化します。

`s_unload`( | module)

  モジュールオブジェクト moduleをアンロードします。