我无法初始化python2.X中多重继承中不同类的数据成员

2024-10-02 08:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码

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()

我想初始化不同类的数据成员(a&;b) 通过子类c,但是super()只访问类a,但是我可以初始化类b的数据成员,比如c的init()中的b.name=name,然后我可以传递对象中的参数。 我的问题是,如果我不这样做,我就不能在c的对象中传递参数。 救救我


Tags: 数据对象nameself参数objectinitdef
1条回答
网友
1楼 · 发布于 2024-10-02 08:25:10

尝试:

    a.__init__(self,x,y)
    b.__init__(self,name)

编辑:

好的,关于b.name的遗漏问题。拆下那条线。在这种情况下,b是类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

你能编辑一下你的第一篇文章,告诉我问题出在哪里吗?对我来说,这就是答案,那是从一开始

相关问题 更多 >

    热门问题