3

を使用してモジュールをインポートしようとしています__import__()__import__実行前に必要なモジュールがわからないため、使用する必要があります。

必要なモジュールがMyClass. ファイル ツリーはapi/apps/myapp/my_class.pyで、クラスmy_class.pyは ですMyClassMyClass今、私がやっていることのメソッドにアクセスするには、次のようにします:

my_class_module =  __import__('api.apps.myapp.my_class')
my_class= my_class_module.MyClass()

しかし、私はこのエラーが発生しています: 'module' object has no attribute 'MyClass'

何か案は?

4

1 に答える 1

3

デフォルトでは、最初のモジュール__import__への参照を返します。あなたの例では、です。解決策は、次のパラメーターを使用することです。apifromlist

my_class_module =  __import__('api.apps.myapp.my_class', fromlist=[''])

__import__ドキュメントから:

[...] パッケージからモジュールをインポートする場合、___import___('AB', ...) は fromlist が空の場合はパッケージ A を返しますが、fromlist が空でない場合はそのサブモジュール B を返すことに注意してください。[...]

その理由の詳細については、Python の __import__ が fromlist を必要とするのはなぜですか?を参照してください。

于 2013-10-07T09:19:50.970 に答える