- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有四个类: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/
所以,我有一个类似于 this one 的用例,但我觉得有一些额外的细节值得提出一个新问题。 ( related questions ,供引用) 我正在编写一个实现 a cycle 的数据结构.基本设
我正在使用 Django 编写一个社交网络应用程序,需要实现类似于 Facebook“Mutual Friends”概念的功能。我有一个像这样的简单模型: class Friend(models.Mo
我有一个 iOS 应用程序,用户可以在其中使用 Facebook 登录并授予 user_friends 权限。从 Graph API 2.0 开始,Facebook 声称你无法获取两个人之间所有的共同
我想知道将来对我来说最简单的方法是什么,可以使查询既有效又不那么复杂。 我应该像这样保存双向关系吗 from_id=1, to_id=2from_id=2, to_id=1 或者只创建一个唯一的行 f
我是一名优秀的程序员,十分优秀!