ホームページ >Java >&#&チュートリアル >Python で動的クラスロードを実現する方法: Java の Class.forName() の代替手段?

Python で動的クラスロードを実現する方法: Java の Class.forName() の代替手段?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 19:37:30604ブラウズ

How to Achieve Dynamic Class Loading in Python: An Alternative to Java's Class.forName()?

Python での動的クラスの読み込み: Java の Class.forName() の代替

Java では、Class.forName() メソッドにより次のことが可能になります。実行時のクラスの動的ロード。 Python は、その固有の柔軟性により、このタスクを達成するためのより簡単なアプローチを提供します。

Python での動的クラスの読み込み

Java とは異なり、Python はイントロスペクションと動的に対するネイティブ サポートを提供します。クラスの読み込み。組み込みの import 関数を使用してモジュールを動的にインポートし、その後 getattr() 関数を使用してそのモジュール内の特定のクラスにアクセスできます。

関数例

Java の Class.forName() の機能を模倣する関数の例を次に示します。

<code class="python">def get_class(kls):
    parts = kls.split('.')
    module = ".".join(parts[:-1])
    m = __import__(module)
    for comp in parts[1:]:
        m = getattr(m, comp)            
    return m</code>

使用法

ロードおよびインスタンス化するにはクラスを動的に作成するには、次の一連の手順を使用します。

  1. 完全修飾クラス名を使用して get_class() 関数を呼び出します。
  2. 返されたオブジェクトを実際のクラス自体として扱います。 .

たとえば、次のコードは使用法を示しています。

<code class="python">D = get_class("datetime.datetime")
assert D == datetime.datetime

a = D(2010, 4, 22)
assert a == datetime.datetime(2010, 4, 22, 0, 0)</code>

追加の考慮事項

Java とは異なり、Class.クラスが見つからない場合、forName() メソッドは ClassNotFoundException をスローします。Python はこの場合の特定の例外を提供しません。代わりに、モジュールをインポートできない場合、関数 import は None を返します。

以上がPython で動的クラスロードを実現する方法: Java の Class.forName() の代替手段?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。