コードを使用して Python でクラス インスタンスを動的に作成する方法の詳細な説明
Java では、リフレクションを通じてクラス名に基づいてクラス インスタンスを作成できますが、Python で同様の機能を実現するにはどうすればよいでしょうか?実際、Python には組み込み関数 import があり、この関数を使用して実行時にいくつかのモジュールを動的にロードできます。
実際、Python には組み込み関数 import があり、この関数を使用して実行時にいくつかのモジュールを動的にロードできます。以下の通り:
def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_meta = getattr(module_meta, class_name) obj = class_meta(*args, **kwargs) return obj
* my_module.py: テスト用モジュール
* my_another_module: テスト用の別のモジュール
from my_modules.my_another_module import * class MyObject(object): def test(self): print 'MyObject.test' MyObject1().test() MyObject2().test() MyAnotherObject().test() class MyObject1(object): def test(self): print 'MyObject1.test' class MyObject2(object): def test(self): print 'MyObject2.test'
my_another_module.py
class MyAnotherObject(object): def test(self): print 'MyAnotherObject.test'
test.py
def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_meta = getattr(module_meta, class_name) obj = class_meta(*args, **kwargs) return obj obj = createInstance("my_modules.my_module", "MyObject") obj.test() MyObject.test MyObject1.test MyObject2.test MyAnotherObject.test
pyinstallerの統合
pyinstallerアプリケーションを使用してパッケージ化されたものについては、上記のコードを使用すると、パッケージ化されたプログラムを実行するときに次のエラーが表示されます
Traceback (most recent call last):
File "test.py", line 12, in <module>
obj = createInstance("my_modules.my_module", "MyObject")
File "test.py", line 7, in createInstance
module_meta = __import__(module_name, globals(), locals(), [class_name])
ImportError: No module named my_modules.my_module
Failed to execute script test
test.py の my_modules の下にモジュールを手動でインポートします。以下のコードの最初の行を参照してください。この方法は最も単純ですが、明らかにあまり良い方法ではありません。
import my_modules.my_module
def createInstance(module_name, class_name, *args, **kwargs):
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
obj = class_meta(*args, **kwargs)
return obj
obj = createInstance("my_modules.my_module", "MyObject")
obj.test()
pyinstaller を使用してパッケージ化する場合は、次のように「--hidden-import」を指定します
pyinstaller -D --hidden-import my_modules.my_module test.py
動的変更Pythonランタイム パスについては、以下のコードの最初の 2 行を参照してください。ここでは、環境変数またはパラメーターを通じてパスを渡すことができます。明らかに、この方法は最初の 2 つの方法よりもはるかに柔軟です。
りー
以上がコードを使用して Python でクラス インスタンスを動的に作成する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。
