python中的多重继承与具有相同名称的方法

时间:2014-08-06 15:12:24

标签: python multiple-inheritance

class Base(object):
    def __init__(self):
        super(Base, self).__init__()
        print 'base ctor'
        self._visible = False

    def get_visible(self):
        return self._visible

    def set_visible(self, value):
        print 'Base set visible'
        self._visible = value       

    def __visible_get(self):
        return self.get_visible()

    def __visible_set(self, value):
        if self.visible != value:
            self.set_visible(value)

    visible = property(__visible_get, __visible_set)

class Base2(object):
    def __init__(self):
        super(Base2, self).__init__()
        print 'base2 ctor'

    def set_visible(self, value):
        print 'base2 setvisible'       

class Drv(Base2, Base):
    def __init__(self):
        super(Drv, self).__init__()
        print 'base2 ctor'

    def set_visible(self, value):
        print 'Drv setvisible'
        super(Drv, self).set_visible(value)

d = Drv()
d.visible = True
d.visible = False

问题是Drv.set_visible()不会调用Base.set_visible(),这是不期望的。在正常情况下,如果基类中有两个具有相同名称的方法,super(Drv).fuc()将调用两者。在这种情况下为什么不呢?

0 个答案:

没有答案