您可以使用[Python-
doc]方法获取
直接 子类:class.__subclasses__()
>>> Device.__subclasses__()[<class 'Mobile'>, <class 'Computer'>]
但是,这些也可能具有子类。我们可以开发一种算法,每次获得下一代算法,并一直这样做直到找到新的子类为止,例如:
def get_descendants(klass): gen = { klass } desc = set() while gen: gen = { skls for kls in gen for skls in kls.__subclasses__() } desc.update(gen) return desc或具有可变数量的参数:
def get_descendants(*klass): gen = { *klass } desc = set() while gen: gen = { skls for kls in gen for skls in kls.__subclasses__() } desc.update(gen) return desc这将返回一个
set()包含所有后代(直接和间接)的。



