假设我有四个类(class):A
, B
源自A
, C
源自A
,和D
源自C
。 (所以我总是有单一继承。)
在Python中,确定任何两个(此类)类的最接近的共同祖先的最佳方法是什么?具体来说,我需要一个函数 clcoancl(X,Y)
其中clcoancl(A, B) == A
, clcoancl(B, C) == A
,和clcoancl(C, D) == C
.
最佳答案
这应该适用于单一或多重继承,以任意数量的类作为输入:
import inspect
from collections import defaultdict
def clcoancl(*cls_list):
mros = [list(inspect.getmro(cls)) for cls in cls_list]
track = defaultdict(int)
while mros:
for mro in mros:
cur = mro.pop(0)
track[cur] += 1
if track[cur] == len(cls_list):
return cur
if len(mro) == 0:
mros.remove(mro)
return None # or raise, if that's more appropriate
正如 NPE 和 Daniel Rossman 所提到的,这可能不是解决根本问题的最佳解决方案。
关于python - 如何确定最接近的共同祖先类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788725/