##
11.4.1 URLopener オブジェクト

`URLopener` および `FancyURLopener` クラスのオブジェクトは 以下の属性を持っています。

`open`( | fullurl[, data])

  適切なプロトコルを使って fullurl を開きます。このメソッドは キャッシュとプロキシ情報を設定し、その後適切な open メソッドを入力引数 つきで呼び出します。認識できないスキームが与えられた場合、 `open_unknown()` が呼び出されます。 data 引数は `urlopen()` の引数 data と同じ意味を持っています。

`open_unknown`( | fullurl[, data])

  オーバライド可能な、未知のタイプの URL を開くためのインタフェースです。

`retrieve`( | url[, filename[, reporthook[, data]]])

  url のコンテンツを取得し、filename に書き込みます。 返り値はタプルで、ローカルシステムにおけるファイル名と、 応答ヘッダ (URL がリモートを指している場合) または `None` (URL がローカルを指している場合) からなります。呼び出し側の処理は その後 filename を開いて内容を読み出さなくてはなりません。 filename が与えられており、かつ URL がローカルシステム上の ファイルを示しているばあい、入力ファイル名が返されます。URL が ローカルのファイルを示しておらず、かつ filename が与えられて いない場合、ファイル名は入力 URL の最後のパス構成要素につけられた拡張子と 同じ拡張子を `tempfile.mktemp()` につけたものになります。 reporthook を与える場合、この変数は 3 つの数値パラメタを受け取る 関数でなくてはなりません。この関数はデータの塊 (chunk) がネットワークから 読み込まれるたびに呼び出されます。ローカルの URL を与えた場合 reporthook は無視されます。

  url が http: スキーム識別子を使っている場合、オプションの 引数 data を与えて `POST` リクエストを行うよう指定できます (通常のリクエストの形式は `GET` です) 。 引数 data は標準の application/x-www-form-urlencoded 形式でなくてはなりません; 上の `urlencode()` を参照して下さい。

`version`
  URL をオープンするオブジェクトのユーザエージェントを指定する 変数です。`urllib` を特定のユーザエージェントであると サーバに通知するには、サブクラスの中でこの値をクラス変数として 値を設定するか、コンストラクタの中でベースクラスを呼び出す前に 値を設定してください。

`FancyURLopener` クラスはオーバライド可能な追加のメソッドを提供 しており、適切な振る舞いをさせることができます:

`prompt_user_passwd`( | host, realm)

  指定されたセキュリティ領域 (security realm) 下にある与えられたホスト において、ユーザ認証に必要な情報を返すための関数です。この関数が 返す値は `(user, password)` 、からなるタプルなくて はなりません。値はベーシック認証 (basic authentication) で使われます。

  このクラスでの実装では、端末に情報を入力するようプロンプトを出します; ローカルの環境において適切な形で対話型モデルを使うには、このメソッドを オーバライドしなければなりません。