gpt4 book ai didi

python - 如何确定最近的共同祖先类

转载 作者:行者123 更新时间:2023-11-28 21:59:55 24 4
gpt4 key购买 nike

假设我有四个类:AB 派生自 AC 派生自 AD 派生自 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com