多继承模糊方法定义

时间:2014-07-29 16:48:00

标签: python oop inheritance multiple-inheritance

考虑Python多重继承:

class A(object):
    def __init__(self):
        self.name = 'a'
    def y(self):
        return "A"

class B(A):
    def __init__(self):
        A.__init__(self)
        self.name = 'b'
    def y(self):
        return "B"

class C(object):
    def __init__(self):
        self.name = 'c'
    def y(self):
        return "C"

class D(C, B):
    def __init__(self):
        C.__init__(self)
        B.__init__(self)

创建D的实例时可以看出,当Python浏览每个构造函数时,它会重新分配self.name,因此self.name的值正如预期的那样分配给它的最后值:

>>> foo = D()
>>> print(foo.name)
b

但是,对于方法y(),分配的方法似乎是分配给它的第一个方法:

>>> print(foo.y())
C

为什么要分配哪些属性之间的差异?有哪些规则?事实上,Python手册有一个关于multiple inheritance的部分,但是我没有看到这里提到的这个主题。

请注意,这个问题不是家庭作业,而是根据精彩的Introduction to Computer Science and Programming Using Python课程中的课程进行改编。

0 个答案:

没有答案