Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengambil Subkelas Kelas dengan Nama dalam Python?

Bagaimana untuk Mengambil Subkelas Kelas dengan Nama dalam Python?

Linda Hamilton
Lepaskan: 2024-11-18 09:10:02
asal
687 orang telah melayarinya

How to Retrieve Subclasses of a Class by Name in Python?

Mencari Subkelas Kelas mengikut Nama dalam Python

Masalah:
Bagaimana anda boleh mendapatkan semula semua kelas yang mewarisi daripada kelas asas tertentu dalam Python, menggunakan kelasnya name?

Penyelesaian:

Python menawarkan pendekatan yang elegan untuk mencari subkelas kelas tertentu mengikut namanya. Melalui kaedah __subclasses__, anda boleh mendapatkan semula subclass kelas secara terus.

Penjelasan Kod:

Dengan mengandaikan anda mempunyai kelas asas bernama Foo dengan subkelas Bar, Baz, dan Bing, coretan kod berikut menggambarkan penggunaan __subclasses__:

class Foo(object):
    pass

class Bar(Foo):
    pass

class Baz(Foo):
    pass

class Bing(Bar):
    pass

# Get the subclasses of Foo
foo_subclasses = Foo.__subclasses__()
print("Subclass names:", [cls.__name__ for cls in foo_subclasses])
print("Subclasses themselves:", Foo.__subclasses__())

# Validate that the subclasses inherit from Foo
for cls in Foo.__subclasses__():
    print("Base class of {}: {}".format(cls, cls.__base__))
Salin selepas log masuk

Output:

Subclass names: ['Bar', 'Baz']
Subclasses themselves: [<class '__main__.Bar'>, <class '__main__.Baz'>]
Base class of <class '__main__.Bar'>: <class '__main__.Foo'>
Base class of <class '__main__.Baz'>: <class '__main__.Foo'>
Salin selepas log masuk

Mencari Sub-subclass:
Jika anda perlu mencari sub-subclass, anda boleh menggunakan rekursif fungsi:

def all_subclasses(cls):
    return set(cls.__subclasses__()).union(
        [s for c in cls.__subclasses__() for s in all_subclasses(c)])
Salin selepas log masuk

Nota:
Adalah penting untuk ambil perhatian bahawa untuk __subkelas__ berfungsi dengan berkesan, takrifan kelas bagi subkelas mestilah telah dilaksanakan sebelum ini. Jika anda mempunyai rentetan yang mewakili nama kelas, anda boleh mendapatkan semula kelas terlebih dahulu menggunakan teknik seperti globals(), locals(), atau importlib.

Atas ialah kandungan terperinci Bagaimana untuk Mengambil Subkelas Kelas dengan Nama dalam Python?. 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