- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这是我计划用于我的游戏的代码,但它提示 MRO 错误:
class Player:
pass
class Enemy(Player):
pass
class GameObject(Player, Enemy):
pass
g = GameObject()
最佳答案
您的 GameObject
继承自 Player
和 Enemy
。因为 Enemy
已经 继承自 Player
Python 现在无法确定首先查找方法的类; Player
,或在 Enemy
上,这将覆盖 Player
中定义的内容。
你不需要在这里命名Enemy
的所有基类;只从那个类继承:
class GameObject(Enemy):
pass
Enemy
已经包含了Player
,不需要再包含了。
关于python - TypeError:无法创建一致的方法解析顺序(MRO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214888/
在 Python 中的大多数类型/类中,我可以调用不带参数的 .mro()。但不是 type 及其后代: In [32]: type(4).mro() Out[32]: [int, object] I
在 django.utils.functional.py : for t in type(res).mro(): # >> class A(object): pass ... >>> A.__mro
假设我们正在实现一个元类,它需要在类被实例化之前知道方法解析顺序。 class Meta(type): def __new__(cls, name, bases, namespace):
为什么搜索完B之后不去更深的搜索Y OR z而是去搜索A呢? Y 是 A 的父级,如果应该先搜索 A,但是 Y 是 B 的父级所以它应该先搜索 Y,为什么这不会抛出 MRO 错误? 谁能解释一下这个查
class First(object): def __init__(self): print("first") class Second(First): def __i
Python in a Nutshell (2nd Edition)一书中有一个例子,它使用 旧样式类,用于演示如何以经典解析顺序解析方法和 新订单有什么不同。 我通过用新样式重写示例来尝试相同的示例
mro() 是什么意思?怎么办? 示例来自 django.utils.functional : for t in type(res).mro(): # >> class A(object): pas
class parent: def fun1(self): print("foo") fun2 = fun1 class child(parent): def
我将如何创建一个由多个基类/mixin 组成的类的扁平表示。有做这种事的图书馆吗?例如: class Foo(object): def a(self): return clas
我有这段代码,其中使用了超继承和多重继承。类的结果是: go A go! go C go! go B go! go D go! 虽然我希望: go A go! go B go! go D go! 根据
问题描述:我有一个类 C 继承自 mixin A 和 B。我想要一个新类 C_,它具有类 C 中定义的所有方法/属性,但 B 与 B_ mixin,选择了 B_ 的定义。 目前它有效,但我觉得:“祈祷
我发现自己处于一种不寻常的情况,我需要在运行时更改类的 MRO。 代码: class A(object): def __init__(self): print self.__c
这个问题在这里已经有了答案: Why is this an ambiguous MRO? (3 个回答) 关闭4年前。 这是我计划用于我的游戏的代码,但它提示 MRO 错误: class Player
我试图了解 abc.ABCMeta 的方法寄存器的用处。据我了解,阅读https://docs.python.org/3/library/abc.html后: 以下代码: class MyFoo(Co
我找到了一个多重继承的示例,但不明白它的行为方式。 class Printable: """A mixin class for creating a __str__ method that p
通过 add_to_class() 添加字段时,我的模型继承存在问题。 我有一个模型 File(models.Model)和 Image(File) - 这些来自 django-filer。 在我的应
在关于 Python webpage 的文档中python 中经典类的方法解析顺序被描述为深度优先的从左到右搜索。我试图用这段代码对此进行测试: class A(object): def __init
我是 MRO 的新手,在弄清楚这些输出的逻辑时遇到了问题。 情况1: class A(object): def save(self): print "A" class B(A):
class Base(object): def m(self): print 'base' class MixinA(Base): def m(self):
当我使用 __metaclass__ = abc.ABCMeta 时,我偶然发现了这个额外的、没有下划线的 mro 方法。它似乎与 __mro__ 相同,只是它返回的是列表而不是元组。这是一个随机示例
我是一名优秀的程序员,十分优秀!