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
Question is Drv.set_visible()
won't call Base.set_visible()
, which is not expected. In normal case, if there are two method with same name in base classes, the super(Drv).fuc()
will call the both. Why not in this case?