具有多个基础 class 的 class 中的继承属性问题
Issue with inherited attributes in a class with multiple base classes
编辑:
感谢您提供有关 class 属性的信息。我知道这些类似于其他 OO 语言中的静态。现在在下面的代码中,我希望使用基础 classes 的 __init__
来设置派生 class 中的 x
和 y
。任何指导将不胜感激。
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)
编辑:
感谢您提供有关 class 属性的信息。我知道这些类似于其他 OO 语言中的静态。现在在下面的代码中,我希望使用基础 classes 的 __init__
来设置派生 class 中的 x
和 y
。任何指导将不胜感激。
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)