3

これは、例がないとおそらく意味がありません。私はDjango アプリでpython-disqusを使用しています。それをラップして、アプリケーションの残りの部分からより適切に切り離しています。

disqusapiいくつかのヘルパー関数をインポートして定義するファイル disqus.py があります。アプリケーション コードの他の場所では、単純に を追加できますfrom mango import disqusが、いくつかの場所では、API 呼び出しを行うときに発生する可能性のある例外をキャプチャする必要があります。これは、次のようなことを余儀なくされていることを意味します。

from disqusapi import APIError
from mango import disqus

try:
    disqus.thread.fetch(1)
except APIError, error:
    logger.warn('Disqus API error: %s' % error)

APIError代わりに、disqus.py の先頭にインポートする場合は、代わりに次のように記述できます。

from mango import disqus

try:
    disqus.thread.fetch(1)
except disqus.APIError, error:
    logger.warn('Disqus API error: %s' % error)

Pyflakes は未使用のインポートについて不平を言っていますが、これは妥当なことのように思えます。ここで Pyflakes を喜んで無視する必要がありますか、それともより良いオプションがありませんか?

明確にするために、私はまったく変更する必要がないdisqusapi.APIErrorので、サブクラス化は不要です。

4

3 に答える 3

3

Pythonでは、より便利な方法で公開するためだけに何かをインポートすることは悪い習慣と考えられていますか?

簡単な答え: いいえ。

長い答えです。自分のコードをよりシンプルで理解しやすいものにするためにラッパーを書いているのであれば、好きなことをすることができます。他のコードをラップする場合、またはモジュールをインポートしてサブクラス化する場合、またはモジュールをインポートしてメソッドを変更する場合。

他の人のためにコードを書いている場合は、何をしているのかを説明するためにコメントを追加したいと思うでしょう。自分のためだけならなんでもいいです。

于 2011-06-20T01:21:16.253 に答える
3

__init__.pyまたはパッケージが明らかに「未使用」のインポートでいっぱいになることはかなり一般的です。このインポートが別のモジュールで使用されていることがはっきりとわかるので、未使用のpyflakesのアイデアは少し単純化されているように思えます。

無視するだけだと面倒くさい。おそらく、pyflakes がこの動作をオーバーライドするための何らかのプラグマがあります。

スタイルが良いかどうかは、実際にはアプリケーションの構造に依存します。双方の主張ができると思います

于 2011-06-20T01:39:33.957 に答える
0

何かを使用する必要があり、それが名前空間で衝突しない場合、それは不適切ではありませんfrom x import y

ただし、自己文書化のために 2 番目のオプションを好む場合があります。誰かがあなたのコードを読んでいる場合、エラーがどの API に関連しているのかわからないかもしれませんが、名前空間から取得することであいまいさを回避できます。

于 2011-06-20T01:21:09.850 に答える