如何检查类是否在Python中有子类?

时间:2017-10-23 15:27:06

标签: python python-2.7 python-3.x

是否有一个函数将类作为参数并根据其子类的存在返回TrueFalse?原则上可以吗?

class A:
    pass

class B(A):
    pass

has_children(A)  # should return True
has_children(B)  # should return False

我想知道无法访问globals()locals()vars()的解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用__subclasses__方法:

def has_children(cls):
    return bool(cls.__subclasses__())

此方法仅针对“新样式”类定义(从Python 2中的object继承,在Python 3中是默认的)。