Python 的靈活反射:相當於Java 的Class.forName()
與Java 相比,Python 的反射功能更加通用且使用者友善Class.forName().雖然可能沒有確切的直接等效項,但了解Python 的反射機制可以讓您實現類似的功能。
Python 的反射方法
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>
要提供與Class.forName() 等效的功能,可以使用下列Python 函數:
<code class="python">>>> D = get_class("datetime.datetime") >>> D <type 'datetime.datetime'> >>> D.now() datetime.datetime(2009, 1, 17, 2, 15, 58, 883000)</code>
此函數可讓您從其完全限定名稱取得類別參考:
類別名稱為分成其組成部分(模組名稱和類別名稱)。
使用 __import__ 導入模組。
重複使用 getattr 來遍歷嵌套模組並取得最終的類別參考。 結論Python 的反射提供了一種強大而靈活的方式來操作類別和物件。雖然它與 Java 的 Class.forName() 不同,但它提供了一種適應性更強、功能更豐富的方法來實現類似的目標。以上是如何在Python中實作與Java的Class.forName()等效的功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!