私はPythonを学んでいます。いつものように、私は自分のスタータープロジェクトに野心的です。私は、App Engine用のコミュニティサイトツールキット用のプラグインシステムに取り組んでいます。私のプラグインのスーパークラスにはinstall_path
というメソッドがあります。 self
の__module__
の__path__
を取得したいとします(この場合はサブクラスになります)。問題は、__module__
はモジュールインスタンスではなくstr
を返します。 eval()
は信頼性が低く、望ましくないため、eval
が含まれていない実際のモジュールインスタンスに手を差し伸べる良い方法が必要です。str
私は__module__
から戻ってきます。Pythonでクラスのモジュールインスタンスを取得するにはどうすればよいですか?
10
A
答えて
11
sys.modules
辞書には、インポートしたすべてのモジュールを含んでいるので、あなたが使用することができます:あなたが望むすべてのモジュールのパスである場合
mod = sys.modules[__module__]
1
どのように1) が明示的に現在のネームスペース内の変数 に割り当て)文字列としてモジュール名を渡し、 2差import X
ような程度Importing modules
X = __import__(‘X’)
作品。
モジュール名(「X」ではなく)を渡して、モジュールインスタンスを戻すことができます。 Pythonは、同じモジュールを2回インポートしないようにします。そのため、以前にインポートしたインスタンスを元に戻す必要があります。
1
また、あなたはモジュールのグローバル__file__
variableを使用することができます。
関連する問題
- 1. CALでは、モジュールインスタンスへの参照を取得するにはどうすればよいですか?
- 2. Pythonでクラスのファイルパスを取得するにはどうすればよいですか?
- 3. Pythonでクラス属性の定義順を取得するにはどうすればよいですか?
- 4. あるクラスから別のクラスにStringを取得するにはどうすればよいですか?
- 5. プログラムでPythonコードにアクセスするにはどうすればよいですか?たとえば、クラスやドキュメントストリングなどのリストを取得するなどです。
- 6. 抽象クラスからクラスの変数を取得するにはどうすればよいですか?
- 7. MVCのどのクラスでもユーザーIDを取得するにはどうすればよいですか?
- 8. PRISMでモジュールインスタンスを取得する方法
- 9. PHPでクラス名を取得するにはどうすればよいですか? Javaでは
- 10. IEnumerableのアイテムの値を別のクラスのメンバーで取得するにはどうすればよいですか?
- 11. JSTLを使用してJSPでクラスの値を取得するにはどうすればよいですか?
- 12. PHPの拡張クラスで最後のchidパブリックプロパティを取得するにはどうすればよいですか?
- 13. pyarangoでコレクションオブジェクトを取得するにはどうすればよいですか?
- 14. SQLでインクリメンタルカウンタを取得するにはどうすればよいですか?
- 15. WatchKitでETAを取得するにはどうすればよいですか
- 16. Vulkanでキューカウントを取得するにはどうすればよいですか?
- 17. アプリケーションレベルでネットワークメッセージを取得するにはどうすればよいですか?
- 18. Clojureでコールスタックを取得するにはどうすればよいですか?
- 19. oauthでparamsを取得するにはどうすればよいですか?
- 20. Cでディレクトリリストを取得するにはどうすればよいですか?
- 21. UIPickerViewでテキストを取得するにはどうすればよいですか?
- 22. grailsでデータベースインスタンスを取得するにはどうすればよいですか?
- 23. カスタムセルでtableViewを取得するにはどうすればよいですか?
- 24. プロジェクトライブラリでDaoSessionを取得するにはどうすればよいですか?
- 25. jsweetでtanhを取得するにはどうすればよいですか?
- 26. UIBarButtonItemでバッジを取得するにはどうすればよいですか?
- 27. IntervalIndexで値を取得するにはどうすればよいですか?
- 28. Oracleでブロックヘッダーサイズを取得するにはどうすればよいですか?
- 29. プログラムで_GLOBAL_OFFSET_TABLE_アドレスを取得するにはどうすればよいですか?
- 30. オーバーレイウィンドウでタッチイベントを取得するにはどうすればよいですか?
これはうまくいくようです。私はちょっときれいな解決策を望んでいますが、他に何も来なければそれを受け入れます。 –
'__import __( 'foo.bar')'を実行すると、 'foo.bar'ではなく' foo'モジュールが返されることに注意してください。詳細については、 '__import__'ドキュメントを参照してください。 –
Lukasのソリューションがはるかに優れている理由はいくつかあります。 –