204得票3回答
类型错误:无法创建一致的方法解析顺序(MRO)。

这是我计划在游戏中使用的代码,但它报了一个MRO错误:class Player: pass class Enemy(Player): pass class GameObject(Player, Enemy): pass g = GameObject()

181得票5回答
“mro()”是什么作用?

mro()是什么意思? django.utils.functional的示例: for t in type(res).mro(): # <----- this if t in self.__dispatch: return self.__dispatch...

111得票4回答
新式类中的方法解析顺序(MRO)是什么?

在《Python in a Nutshell(第二版)》一书中,有一个示例使用旧式类来演示如何按照经典的解析顺序解析方法,并说明它与新顺序的区别。我尝试通过将示例重写为新样式来进行相同的示例,但结果与旧样式类获得的结果没有区别。 我用于运行示例的 Python 版本是 2.5.2。下面是示例:...

68得票1回答
混入(mixins)的顺序如何影响派生类?

假设我有以下的混合器,它们之间通过接触dispatch()产生了重叠:class FooMixin(object): def dispatch(self, *args, **kwargs): # perform check A ... r...

42得票2回答
super()和父类名称之间有什么区别?

使用super()和直接使用父类名称有区别吗?例如:class Parent: def __init__(self): print("In parent") self.__a=10 class Child(Parent): def __init...

20得票9回答
运行时修改Python MRO

我发现自己处于一个不寻常的情况,需要在运行时更改类的MRO。 代码:class A(object): def __init__(self): print self.__class__ print "__init__ A" self.he...

18得票2回答
Python中的多重继承中的self和super

在Raymond Hettinger在2015年PyCon的演讲“超级考虑超级说话”中,他解释了在多重继承环境下使用Python中的super的优点。这是Raymond在演讲中使用的示例之一: class DoughFactory(object): def get_dough(sel...

18得票2回答
为什么__mro__在dir(MyClass)中没有显示出来?

class MyClass(object): pass print MyClass.__mro__ print dir(MyClass) 输出:(<class '__main__.MyClass'>, <type 'object'>) ['__class__'...

15得票1回答
Python 3 内置类型的 __init__ 方法是否需要调用 super().__init__ 方法?

当从一个内置类型以及其他类中派生时,似乎内置类型的构造函数不会调用超类构造函数。这导致在MRO中跟在内置类型后面的类型的__init__方法不被调用。 例如:class A: def __init__(self, *args, **kwargs): super()._...

15得票3回答
使用Python数据类实现多重继承

我正在尝试使用新的Python数据类(dataclasses)创建一些混合类(当我写这篇文章时,我已经觉得这听起来像一个匆忙的想法),但是我遇到了一些问题。请看下面的示例:from dataclasses import dataclass @dataclass class NamedObj:...