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
1条答案
按热度按时间kadbb4591#
可以通过**
class.__subclasses__()
**[Python-doc]方法获取 direct 子类:字符串
然而,它们也可能具有子类。我们可以开发一个算法,每次都获得下一代,并一直这样做,直到没有新的子类被发现,比如:
型
或具有可变数目的参数:
型
这将返回一个包含所有后代(直接和间接)的
set()
。