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>
使用法
ロードおよびインスタンス化するにはクラスを動的に作成するには、次の一連の手順を使用します。
たとえば、次のコードは使用法を示しています。
<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 サイトの他の関連記事を参照してください。