from director_nested import * class A(FooBar_int): def do_step(self): return "A::do_step;" def get_value(self): return "A::get_value" pass a = A() if a.step() != "Bar::step;Foo::advance;Bar::do_advance;A::do_step;": raise RuntimeError, "Bad A virtual resolution" class B(FooBar_int): def do_advance(self): return "B::do_advance;" + self.do_step() def do_step(self): return "B::do_step;" def get_value(self): return 1 pass b = B() if b.step() != "Bar::step;Foo::advance;B::do_advance;B::do_step;": raise RuntimeError, "Bad B virtual resolution" class C(FooBar_int): def do_advance(self): return "C::do_advance;" + FooBar_int.do_advance(self) def do_step(self): return "C::do_step;" def get_value(self): return 2 def get_name(self): return FooBar_int.get_name(self) + " hello" pass cc = C() c = FooBar_int_get_self(cc) c.advance() if c.get_name() != "FooBar::get_name hello": raise RuntimeError if c.name() != "FooBar::get_name hello": raise RuntimeError