具有多个基础 class 的 class 中的继承属性问题

Issue with inherited attributes in a class with multiple base classes

编辑: 感谢您提供有关 class 属性的信息。我知道这些类似于其他 OO 语言中的静态。现在在下面的代码中,我希望使用基础 classes 的 __init__ 来设置派生 class 中的 xy。任何指导将不胜感激。

class Base1:
  def __init__(self, x):
      self.x = x

class Base2:
  def __init__(self, y):
      self.y = y

class Derv (Base1, Base2):
  def __init__(self, x, y):
      self.x = x
      self.y = y

旧:

Multiple inheritance: The derived class gets attributes from one base class only?相关

现在,下面的例子发生了什么(d 的字典是空的):

class Base1:
  x = 10

class Base2:
  y = 10

class Derv (Base1, Base2):
  pass


d=Derv()
print (d.__dict__)

虽然当我们将代码更改为以下内容时这会起作用:

class Base1:
  x = 0
  def __init__(self, x):
      self.x = x

class Base2:
  y = 0
  def __init__(self, y):
      self.y = y

class Derv (Base1, Base2):
  def __init__(self, x, y):
      self.x = x
      self.y = y

我觉得这更多是因为在Derv__init__方法中定义了x and y。但是,如果我想使用基础 class 构造函数设置值,正确的方法是什么?

最简单最好:只需在每个基中调用初始化程序!

class Derv(Base1, Base2):
    def __init__(self, x, y):
        Base1.__init__(self, x)
        Base2.__init__(self, y)