为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何找到给定名称的类的所有子类?

请问如何找到给定名称的类的所有子类?

繁星coding 2019-08-03 07:03:28
如何找到给定名称的类的所有子类?我需要一种工作方法来获取从Python中的基类继承的所有类。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

如果您只想要直接子类,那么.__subclasses__()效果很好。如果您想要所有的子类,等等,您将需要一个函数来完成这个任务。

下面是一个简单的、可读的函数,它递归地查找给定类的所有子类:

def get_all_subclasses(cls):
    all_subclasses = []

    for subclass in cls.__subclasses__():
        all_subclasses.append(subclass)
        all_subclasses.extend(get_all_subclasses(subclass))

    return all_subclasses




查看完整回答
反对 回复 2019-08-04
?
阿晨1998

TA贡献2037条经验 获得超6个赞

最简单的一般形式的解决方案:

def get_subclasses(cls):
    for subclass in cls.__subclasses__():
        yield from get_subclasses(subclass)
        yield subclass

和一个类方法,以防有一个继承自:

@classmethoddef get_subclasses(cls):
    for subclass in cls.__subclasses__():
        yield from subclass.get_subclasses()
        yield subclass




查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 437 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信