method-resolution-order相关内容

类型错误:无法创建一致的方法解析顺序 (MRO)

这是我计划用于我的游戏的代码,但它抱怨 MRO 错误: 类播放器:经过类敌人(玩家):经过类游戏对象(玩家,敌人):经过g = 游戏对象() 解决方案 你的 GameObject 继承自 Player and Enemy.因为Enemy已经继承自Player,Python现在无法确定首先查找哪个类;Player 或 Enemy,这将覆盖 Player 中定义的内容. 你不需要在这里命名 ..
发布时间:2021-12-17 19:11:25 Python

如何动态添加 mixin 作为基类而不会出现 MRO 错误?

假设我有一个 A、B 和 C 类. Class A 和 B 都是 Class C 的 mixin 类. A 类(对象):经过B类(对象):经过C类(对象,A,B):经过 这在实例化 C 类时不起作用.我必须从 C 类中删除 object 才能使其工作.(否则你会遇到 MRO 问题). TypeError: 调用元类基时出错 无法创建一致的方法解析 订单(MRO)为基地B,对象, ..
发布时间:2021-11-17 02:32:18 Python

使用python数据类实现多重继承

我正在尝试使用新的 python 数据类来创建一些混合类(在我写这篇文章时,我认为这听起来像是一个轻率的想法),但我遇到了一些问题.看下面的例子: 从数据类导入数据类 @dataclassNamedObj 类:名称:strdef __post_init__(self):打印(“NamedObj __post_init__")self.name = "姓名:" + self.name@数据类 ..

mro方法和类的__mro__属性之间有什么区别?

当我使用 __ metaclass__ = abc.ABCMeta 时,偶然发现了这种多余的,不加下划线的 mro 方法。它似乎与 __ mro __ 相同,只是它返回一个列表而不是一个元组。这是一个随机示例( ideone片段): 导入abc 导入副本 类寿命(对象): __metaclass__ = abc.ABCMeta @abc .abstractmethod d ..
发布时间:2020-06-04 18:42:01 Python

在一般情况下,Python的super()实际如何工作?

super()上有很多很棒的资源,包括 这篇很棒的博客文章,其中有很多,还有关于Stack Overflow的许多问题.但是,我觉得他们都没有解释最常见情况下的工作原理(带有任意继承图),以及幕后情况. 考虑钻石继承的基本示例: class A(object): def foo(self): print 'A foo' class B(A): def ..
发布时间:2020-05-13 19:12:04 Python

C ++中的方法解析顺序

请考虑以下类层次结构: 带有虚拟方法foo()的基类对象 具有多重继承(虚拟和非虚拟)的任意层次结构;每个类都是Object的子类型;其中有些覆盖foo(),有些则不覆盖 该层次结构中的X类,不覆盖foo() 如何确定在C ++中对类X的对象调用foo()时将执行哪种方法? (我正在寻找算法,而不是任何特定情况.) 解决方案 在C ++中,没有像Python这样的MR ..