1

一般的なpythonファイルに多数のファイルをインポートし、現在のモジュールにインポートされたモジュールが必要なときにそのファイルを含めたいです。from x import y を使用すると、これはもちろんエラーと再インポートにつながりますが、「通常の」インポートステートメントを使用すると、次のような長い命令ステートメントになります。

x = importModule.directoryName1.directoryName2.moduleName.ClassName()

一方、私は次のことをしたいと思います:

x = importModule.ClassName()

しかし、前に言ったように、これを行う:

from importModule.directoryName1.directoryName2.moduleNam import ClassName

ClassName に importModule を含めているため、一般的なファイルでは機能しません。

だから、私は基本的に、これにとにかくあるのかどうか疑問に思っています(おそらく、C ++のようなusingステートメントのようなものですか?)

4

2 に答える 2

3

再帰的なインポート (importModuleを参照しmoduleName、 をmoduleName参照しているようimportModuleです。リファクタリングすると、使用できるはずです

from importModule.directoryName1.directoryName2.moduleName import ClassName

リファクタリングするには、インポートの前にmoduleNameクラス定義がClassName発生するように、importModuleインポートの順序を変更できます。他のモジュールをインポートしようとする前に、各ファイルが他のモジュールに必要な参照を定義している限り、問題は解決します。

ClassNameリファクタリングの別の方法:使用されている関数内でいつでもインポートできます。moduleName関数がインポートされる前に呼び出されない限り、問題ありません。

ただし、Aリファクタリングの最善の方法は、いくつかのクラスまたは参照を独自のモジュールに移動することです。これにより、問題が解決するだけでなく、今後のメンテナンスが容易になります。B BA

于 2010-07-02T13:15:29.763 に答える
2

まあ、あなたはできる

from importModule.directoryName1.directoryName2 import moduleName as importModule

しかし、それは見苦しく、非常に紛らわしいものであり、後でコードを読む Python プログラマーと比べて、多くのポイントを獲得することはできません。

于 2010-07-02T13:08:36.230 に答える