// run
python late-binding.py
Up
Up
Up
Up
Up
Up
Down
Down
Down
Down
Down
Down
//code
class Top:
pass
class Middle(Top):
pass
class Bottom(Middle):
pass
class Up:
def cv(self, t):
"Top t"
print "Up"
def ctv(self, b):
"Bottom b"
print "Up"
class Down(Up):
def cv(self, m):
"Middle m"
print "Down"
def ctv(self, m):
"Middle m"
print "Down"
if __name__ == "__main__":
u = Up ()
d = Down ()
# useless
# ud = new Down ()
# first column
u.cv(Top ())
u.cv(Middle ())
u.cv(Bottom ())
u.ctv(Top ())
u.ctv(Middle ())
u.ctv(Bottom ())
# second column
d.cv(Top ())
d.cv(Middle ())
d.cv(Bottom ())
d.ctv(Top ())
d.ctv(Middle ())
d.ctv(Bottom ())
# third column
# ud.cv(Top ())
# ud.cv(Middle ())
# ud.cv(Bottom ())
# ud.ctv(Top ())
# ud.ctv(Middle ())
# ud.ctv(Bottom ())