0

我有一个这样的代码

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

我想通过子类c初始化不同类(a和b)的数据成员,但是super()只访问a类,但不知何故我可以像cb.name=nameinit()一样初始化b类数据成员,然后我可以传递对象中的参数。我的问题是,如果我不这样做,我就不能在 c 的对象中传递参数。帮我!

4

1 回答 1

-1

尝试:

    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

您可以编辑您的初始帖子并告诉我问题出在哪里吗?对我来说,这就是答案,那是从起点...

于 2017-10-25T20:23:10.450 回答