Python 2.7 方法解析顺序覆盖

标签 python python-2.7 multiple-inheritance method-resolution-order

我在 Python 中使用多重继承时遇到一些问题,无法理解我做错了什么。

我有如下定义的三个类 A、B、C 它不起作用。

class A(object):
   def __init__(**kwargs):
     .
     .

class B(object):
   def __init__(**kwargs):
    # prepare a dictionary "options" with the options used to call A
    super(B,self).__init__(**options)

   def coolmethod(x):
      #some cool stuff

对于 A 和 B,我没有任何问题。

我想创建一个继承自 A 和 B 的第三类 C 这样我就可以使用 B 中定义的 coolmethod,但想使用 A 中定义的构造函数。

尝试定义 class C(A,B) 不起作用,因为未定义 MRO。

但是定义 class C(B,A) 不允许我使用 A.init 而不是 B.init

我该如何解决这个问题?

最佳答案

您可以直接调用 A.__init__() 而不是在 C: 中使用 super()

class C(B,A):
    def __init__(self, **kwargs):
        A.__init__(self, **kwargs)

关于Python 2.7 方法解析顺序覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283137/

相关文章:

python - 访问脚本主模块内定义的python类变量

Python 2 绑定(bind) Net-SNMP 错误 - undefined symbol : netsnmp-memdup

javascript - 我需要如何更改这些 TypeScript mixin 类型定义才能允许定义允许类扩展特征的 mixin?

python - 在 python 中具有多重继承的 MRO

python - Django - 过滤早于 X 天的对象

python - 对 Python 的内置排序(以范围和 lambda 为键)感到沮丧

python - 我应该使用 Django 的 contrib 应用程序还是构建我自己的应用程序?

python - 开源英语词典 - Python - 库 - API

Java - 扩展整个类层次结构

python - 如何在 tweepy 中的某个位置获取特定主题标签的推文?