这是我的递归获取所有子类的类方法:
eval()
有没有办法让它成为单行?类似的东西:
@classmethod
def get_subclasses(cls):
subclasses = set()
for subclass in cls.__subclasses__():
subclasses.add(subclass)
subclasses.update(subclass.get_subclasses())
return subclasses
答案 0 :(得分:2)
可以使用单行,但我认为保持两行可以保持清晰:
subclasses = set(cls.__subclasses__())
return subclasses + set(sc.get_subclasses() for sc in subclasses)
答案 1 :(得分:0)
这是一条分为两行的逻辑行,以提高可读性:
{{1}}
答案 2 :(得分:-1)
这将返回从Base类继承的所有子类的名称。
print([cls.__name__ for cls in vars()['Base'].__subclasses__()])