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

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

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

SMILET 2019-07-11 20:35:25
如何找到给定名称的类的所有子类?我需要一种工作方法来获取从Python中的基类继承的所有类。
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

如果您只想要直接子类,那么.__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-07-11
?
HUX布斯

TA贡献1876条经验 获得超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-07-11
  • 3 回答
  • 0 关注
  • 629 浏览
慕课专栏
更多

添加回答

举报

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