如何从父类中获取所有子模型?作为一个例子,我有:class Device(PolymorphicModel): .....class Mobile(Device): .....class Computer(Device): .....所以我想从 Device 模型中获取它的所有后代:Mobile、Computer 作为类而不是实例。谢谢你。
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
您可以使用[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()包含所有后代(直接和间接)的。
添加回答
举报
0/150
提交
取消