如何從父類中獲取所有子模型?作為一個例子,我有: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
提交
取消