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()
将调用两者。在这种情况下为什么不呢?