Python の subclasses メソッドを使用したクラスのサブクラスの検索
指定されたクラスのすべてのサブクラスを検索するのが一般的ですPython オブジェクト指向プログラミングで必要になります。 Python は、__subclasses__ メソッドを通じて洗練されたソリューションを提供します。
Python の新しいスタイルのクラス (つまり、オブジェクト クラスから継承するクラス) には、サブクラスのリストを返す __subclasses__ メソッドがあります。次のクラス階層を考えてみましょう:
class Foo(object): pass class Bar(Foo): pass class Baz(Foo): pass class Bing(Bar): pass
Foo のサブクラスを取得するには、単純に Foo.__subclasses__():
print(Foo.__subclasses__()) # Output: [<class '__main__.Bar'>, <class '__main__.Baz'>]
Recursive Subclass Retrieval
サブサブクラスを含むすべてのサブクラスを検索したい場合は、再帰が必要です:def all_subclasses(cls): return set(cls.__subclasses__()).union( [s for c in cls.__subclasses__() for s in all_subclasses(c)]) print(all_subclasses(Foo)) # Output: {<class '__main__.Bar'>, <class '__main__.Baz'>, <class '__main__.Bing'>}
クラス名の文字列の処理
クラス名を文字列として指定してサブクラスを検索すると述べました。 Python クラスはファーストクラスのオブジェクトであるため、文字列表現ではなくクラスを直接使用することをお勧めします。ただし、クラス名文字列がある場合は、globals() 辞書を使用してクラスを取得できます。name = 'Foo' cls = globals()[name] print(cls.__subclasses__())
以上が`__subclasses__` を使用して Python クラスのサブクラスを検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。