ホームページ  >  記事  >  バックエンド開発  >  Python でクラスのサブクラスを名前で取得するにはどうすればよいですか?

Python でクラスのサブクラスを名前で取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-18 09:10:02632ブラウズ

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

Python でクラスのサブクラスを名前で検索する

問題:
すべてのクラスを取得するにはどうすればよいですかPython の特定の基本クラスからそのクラスを使用して継承するものname?

解決策:

Python は、指定されたクラスのサブクラスを名前で検索するための洗練されたアプローチを提供します。 __subclasses__ メソッドを使用すると、クラスのサブクラスを直接取得できます。

コードの説明:

サブクラス Bar、Baz、を持つ Foo という名前の基本クラスがあると仮定します。および Bing の使用法を次のコード スニペットで示します。 __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__))

出力:

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'>

サブサブクラスの検索:
サブサブクラスを検索する必要がある場合は、再帰メソッドを使用できます。 function:

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

注:
__subclasses__ が効果的に機能するには、サブクラスのクラス定義が事前に実行されている必要があることに注意することが重要です。クラス名を表す文字列がある場合は、まず globals()、locals()、または importlib などの手法を使用してクラスを取得できます。

以上がPython でクラスのサブクラスを名前で取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。