我无法在 python2.X 的多重继承中初始化不同 类 的数据成员
i am not able to initiialise data members of different classes in multiple inheritance in python2.X
我有一个这样的代码
class a(object):
def __init__(self, x, y):
self.x=x
self.y=y
super(a, self).__init__()
def displayA(self):
print self.x
print self.y
class b(object):
def __init__(self, name):
self.name=name
super(b, self).__init__()
def displayB(self):
print self.name
class c(a,b):
def __init__(self, p,x,y,name):
self.p = p
b.name=name #**this line confuses me**
super(c,self).__init__(x,y)
def displayC(self):
print self.p
v = c(10, 12, 78, 'abc')
v.displayC()
v.displayA()
v.displayB()
我想通过subclassc初始化不同classes(a&b)的数据成员,但是super()只访问了classa,但是不知何故,我可以在 c 的 init() 中初始化 class b 数据成员,如 b.name=name
,然后我可以在对象中传递参数。
我的问题是,如果我不这样做,我就不能在 c 的对象中传递参数。
帮帮我!
尝试:
a.__init__(self,x,y)
b.__init__(self,name)
编辑:
好的,错过了关于 b.name
的问题。删除该行。在这种情况下,b 是 class。 b.__init__
是一种特殊约定,用于显示您愿意调用哪个父构造函数。
而且这不是重复的。希望,现在它有所帮助。
编辑2:
class a(object):
def __init__(self, x, y):
self.x=x
self.y=y
print("a " + str(x) + " - " + str(y) )
def displayA(self):
print self.x
print self.y
class b(object):
def __init__(self, name):
self.name=name
print("b " + name )
def displayB(self):
print self.name
class c(a,b):
def __init__(self, p,x,y,name):
self.p = p
a.__init__(self,x,y)
b.__init__(self,name)
def displayC(self):
print self.p
v = c(10, 12, 78, 'abc')
v.displayC()
v.displayA()
v.displayB()
结果:
a 12 - 78
b abc
10
12
78
abc
你能编辑一下你的初始 post 并告诉我问题是什么吗?对我来说这就是答案,而且是从起点...
我有一个这样的代码
class a(object):
def __init__(self, x, y):
self.x=x
self.y=y
super(a, self).__init__()
def displayA(self):
print self.x
print self.y
class b(object):
def __init__(self, name):
self.name=name
super(b, self).__init__()
def displayB(self):
print self.name
class c(a,b):
def __init__(self, p,x,y,name):
self.p = p
b.name=name #**this line confuses me**
super(c,self).__init__(x,y)
def displayC(self):
print self.p
v = c(10, 12, 78, 'abc')
v.displayC()
v.displayA()
v.displayB()
我想通过subclassc初始化不同classes(a&b)的数据成员,但是super()只访问了classa,但是不知何故,我可以在 c 的 init() 中初始化 class b 数据成员,如 b.name=name
,然后我可以在对象中传递参数。
我的问题是,如果我不这样做,我就不能在 c 的对象中传递参数。
帮帮我!
尝试:
a.__init__(self,x,y)
b.__init__(self,name)
编辑:
好的,错过了关于 b.name
的问题。删除该行。在这种情况下,b 是 class。 b.__init__
是一种特殊约定,用于显示您愿意调用哪个父构造函数。
而且这不是重复的。希望,现在它有所帮助。
编辑2:
class a(object):
def __init__(self, x, y):
self.x=x
self.y=y
print("a " + str(x) + " - " + str(y) )
def displayA(self):
print self.x
print self.y
class b(object):
def __init__(self, name):
self.name=name
print("b " + name )
def displayB(self):
print self.name
class c(a,b):
def __init__(self, p,x,y,name):
self.p = p
a.__init__(self,x,y)
b.__init__(self,name)
def displayC(self):
print self.p
v = c(10, 12, 78, 'abc')
v.displayC()
v.displayA()
v.displayB()
结果:
a 12 - 78
b abc
10
12
78
abc
你能编辑一下你的初始 post 并告诉我问题是什么吗?对我来说这就是答案,而且是从起点...