Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Menghidupkan Kelas Secara Dinamik dalam Python: Adakah Terdapat Setara Class.forName()?

Mary-Kate Olsen
Lepaskan: 2024-11-03 11:32:03
asal
239 orang telah melayarinya

How to Dynamically Instantiate Classes in Python: Is There a Class.forName() Equivalent?

Adakah Python Menawarkan Setara dengan Kaedah Java Class.forName()?

Keupayaan pantulan Python lebih meluas dan fleksibel berbanding Java. Artikel ini menjawab persoalan sama ada Python mempunyai persamaan Java Class.forName(), dan menyediakan penyelesaian Pythonic untuk membuat instantiating kelas secara dinamik daripada argumen rentetan.

Merefleksikan kaedah Class.forName() Java, yang mengambil masa nama kelas yang layak sepenuhnya sebagai input dan mengembalikan objek kelas yang sepadan, seseorang boleh membayangkan fungsi yang serupa dalam Python. Walau bagaimanapun, Python tidak mempunyai persamaan langsung.

Fungsi get_class() yang dibentangkan di bawah meniru gelagat Class.forName(), membolehkan penciptaan objek kelas daripada perwakilan rentetan:

<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>
Salin selepas log masuk

Fungsi ini boleh digunakan seolah-olah ia adalah kelas itu sendiri.

Sebagai contoh, pertimbangkan berikut:

<code class="python">D = get_class("datetime.datetime")
D # Output: <type 'datetime.datetime'>
D.now() # Output: datetime.datetime(2009, 1, 17, 2, 15, 58, 883000)
a = D(2010, 4, 22)
a # Output: datetime.datetime(2010, 4, 22, 0, 0)</code>
Salin selepas log masuk

Selain itu, artikel tersebut menyerlahkan perbezaan pantulan Python berbanding Java, dan menggalakkan penerokaan pendekatan Pythonic untuk mencapai kefungsian yang serupa.

Atas ialah kandungan terperinci Bagaimana untuk Menghidupkan Kelas Secara Dinamik dalam Python: Adakah Terdapat Setara Class.forName()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!