0

すべてのサブクラスを再帰的に取得するための私のクラスメソッドは次のとおりです。

@classmethod
def get_subclasses(cls):
    subclasses = set()
    for subclass in cls.__subclasses__():
        subclasses.add(subclass)
        subclasses.update(subclass.get_subclasses())
    return subclasses

ワンライナーにする方法はありますか?何かのようなもの:

return set(subclass.__subclasses__() for subclass in self.__subclasses__())
4

3 に答える 3

2

1 行にすることもできますが、2 行にすることで明快さを保つことができると思います。

subclasses = set(cls.__subclasses__())
return subclasses + set(sc.get_subclasses() for sc in subclasses)
于 2015-05-04T18:00:40.050 に答える