Python の柔軟なリフレクション: Java の Class.forName() と同等
Python のリフレクション機能は、Java のリフレクション機能と比較して、はるかに多用途で使いやすいです。 Class.forName()。厳密に直接同等のものはないかもしれませんが、Python のリフレクション メカニズムを理解すると、同様の機能を実現できます。
Python のリフレクション アプローチ
Python のリフレクションでは、いくつかの重要なテクニックが利用されます。
カスタム関数: get_class
Class.forName() と同等の機能を提供するには、次の Python 関数を利用できます:
<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") >>> D <type 'datetime.datetime'> >>> D.now() datetime.datetime(2009, 1, 17, 2, 15, 58, 883000)</code>
仕組み
結論
Python のリフレクションは、クラスとオブジェクトを操作する強力かつ柔軟な方法を提供します。 Java の Class.forName() とは異なりますが、同様の目標を達成するための、より適応性が高く機能が豊富なアプローチを提供します。
以上がJava の Class.forName() と同等の機能を Python で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。