私のプログラムでは、ユーザーが CouchDB データベースへの URL を指定できるようにしたいと考えています。
この URL の一部に適切なデフォルトを提供したいと考えています。たとえば、localhost、5984、および mushin は、それぞれホスト、ポート、およびパスのデフォルトです。
urlparse.urlparse は、プロパティ アクセサーを持ち、セッターを持たないタプル サブクラスを返します。
ホストとポート (および後でユーザー名とパスワード) は、タプルの netloc 部分を解析するプロパティです。ただし、これらのプロパティは取得のみです。したがって、私にとって理想的なこのコードは失敗します。
try:
jane = urlparse(args[0])
except IndexError:
self.stdout.write('Please give a database to replicate with.\n')
return
if not jane.hostname:
jane.hostname = HOST
if not jane.port:
jane.port = PORT
if not jane.path:
jane.path = DB
url = jane.geturl()
netloc はユーザー名/パスワード/ホスト/ポート コンポーネントに分割されていないため、タプル インターフェイスを使用しても役に立ちません。
URL を解析し、その一部をオーバーライドして、新しい URL に戻すより良い方法はありますか?