18.6.3 BaseHandler オブジェクト

BaseHandler オブジェクトは直接的に役に立つ 2 つのメソッド と、その他として導出クラスで使われることを想定したメソッドを 提供します。以下は直接的に使うためのメソッドです:

add_parent( director)
親オブジェクトとして、director を追加します。

close( )
全ての親オブジェクトを削除します。

以下のメンバおよびメソッドは BaseHandler から導出された クラスでのみ使われます: 注意: 慣習的に、protocol_request()protocol_response() といったメソッドを定義している サブクラスは*Processor と名づけ、その他は*Handler と名づけることになっています

parent
有効な OpenerDirector です。この値は違うプロトコルを 使って URL を開く場合やエラーを処理する際に使われます。

default_open( req)
このメソッドは BaseHandler では定義されて いません。 しかし、全ての URL をキャッチさせたいなら、サブクラスで定義する 必要があります。

このメソッドが定義されていた場合、OpenerDirector から 呼び出されます。このメソッドは OpenerDirector の メソッド open() が返す値について記述されているようなファイル類似の オブジェクトか、None を返さなくてはなりません。 このメソッドが送出する例外は、真に例外的なことが起きない限り、 URLError を送出しなければなりません (例えば、 MemoryErrorURLError をマップしては いけません)。

このメソッドはプロトコル固有のオープンメソッドが呼び出される前に 呼び出されます。

protocol_open( req)
このメソッドは BaseHandler では定義されて いません。 しかしプロトコルの指定された URL をキャッチしたいなら、サブクラスで 定義する必要があります。

このメソッドが定義されていた場合、OpenerDirector から 呼び出されます。戻り値は default_open と同じでなければ なりません。

unknown_open( req)
このメソッドは BaseHandler では定義されて いません。 しかし URL を開くための特定のハンドラが登録されていないような URL を キャッチしたいなら、サブクラスで定義する必要があります。

このメソッドが定義されていた場合、OpenerDirector から 呼び出されます。戻り値は default_open と同じでなければ なりません。

http_error_default( req, fp, code, msg, hdrs)
このメソッドは BaseHandler では定義されて いません。 しかしその他の処理されなかった HTTP エラーを処理する機能をもたせたいなら、 サブクラスで定義する必要があります。このメソッドはエラーに遭遇した OpenerDirector から自動的に呼び出されます。その他の状況では 普通呼び出すべきではありません。

reqRequest オブジェクトで、 fp は HTTP エラー本体を読み出せるようなファイル類似のオブジェクトに なります。code は 3 桁の 10 進数からなるエラーコードで、 msg ユーザ向けのエラーコード解説です。hdrs は エラー応答のヘッダをマップしたオブジェクトです。

返される値および送出される例外は urlopen() と同じ ものでなければなりません。

http_error_nnn( req, fp, code, msg, hdrs)
nnn は 3 桁の 10 進数からなる HTTP エラーコードでなくては なりません。このメソッドも BaseHandler では定義されていませんが、 サブクラスのインスタンスで定義されていた場合、エラーコード nnn の HTTP エラーが発生した際に呼び出されます。

特定の HTTP エラーに対する処理を行うためには、このメソッドをサブクラスで オーバライドする必要があります。

引数、返される値、および送出される例外は http_error_default() と同じものでなければなりません。

protocol_request( req)
このメソッドはBaseHandler では定義されていません が、 サブクラスで特定のプロトコルリクエストのプリプロセスを行いたい 場合には定義せねばなりません。

このメソッドが定義されていると、親となる OpenerDirector から 呼び出されます。その際、reqRequest オブジェクトに なります。戻り値はRequest オブジェクトでなければなりません。

protocol_response( req, response)
このメソッドはBaseHandler では定義されていません が、 サブクラスで特定のプロトコルリクエストのポストプロセスを行いたい 場合には定義せねばなりません。

このメソッドが定義されていると、親となる OpenerDirector から 呼び出されます。その際、reqRequest オブジェクトに なります。 responseurlopen() の戻り値と同じインタフェースを 実装したオブジェクトになります。 戻り値もまた、urlopen() の戻り値と同じインタフェースを 実装したオブジェクトでなければなりません。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。