クイックバックグラウンド:モジュールを作成します。私のオブジェクトの1つに、自分のモジュールの下で使用されるフレームワークに応じて、正常に完了するかどうかを判断する方法があります。だから、いくつかの方法はまず彼らが実際にどのような枠組みを持っているかを確認する必要があります。これを取り組むの現在の方法がある:私の心の中で冒頭またはスクリプトの代わりに関数でインポートしますか?
def framework_dependent_function():
try:
import module.that.may.not.be.available
except ImportError:
# the required functionality is not available
# this function can not be run
raise WrongFramework
# or should I just leave the previous exception reach higher levels?
[ ... and so on ... ]
しかし、何かがファイルの途中で輸入を行っていることは悪いことだと私に言って続けています。理由を思い出すことができないことがあります。わずかに複雑なコードとは別に、私は推測します。
私はここでやっていることについて全く間違っていますか?おそらく__init__
のどこかで、モジュールがどのような環境で動作しているかを調べる他の方法はありますか?すべて定義し、その後、
try:
import module.that.may.not.be.available
def framework_dependent_function():
# whatever
except ImportError:
def framework_dependent_function():
# the required functionality is not available
# this function can not be run
raise NotImplementedError
これはまた、あなたがimport
にモジュールを単一の試行を行うことができます:関数のないすべての呼び出しがimport
に必要な機能を試してみる必要があるため
これは 'framework_dependent_function'の最初の定義を隠しています。 –
@Jakob:* 'def'ブロックを' try'の前に置く必要があります。そうしないと、 'NotImplemented'バージョンは常に以下の' def'にリバウンドします。 –
良い点D:。 –