Sorry, that last code had a typo in it: #!/usr/bin/python
def main(): foox = FooX() fooy = FooY() fooz = FooZ() foox.method_x("I", "AM", "X") print fooy.method_x("ESTOY", "Y", "!") print fooz.method_x(100, 200, 300) class MyMixin(object): def method_x(self, a, b, c): super(MyMixin, self).method_x(a, b, c) print "MyMixin.method_x(%s, %s, %s, %s)" % (repr(self), repr(a), repr(b), repr(c)) class BaseA(object): def method_x(self, a, b, c): super(BaseA, self).method_x(a, b, c) print "BaseA.method_x(%s, %s, %s, %s)" % (repr(self), repr(a), repr(b), repr(c)) class BaseB(object): pass class BaseC(object): def method_x(self, a, b, c): super(BaseC, self).method_x(a, b, c) print "BaseC.method_x(%s, %s, %s, %s)" % (repr(self), repr(a), repr(b), repr(c)) class FooX(BaseA, MyMixin): def method_x(self, a, b, c): super(FooX, self).method_x(a, b, c) print "FooX.method_x(%s, %s, %s, %s)" % (repr(self), repr(a), repr(b), repr(c)) class FooY(BaseB, MyMixin): pass class FooZ(BaseC, MyMixin): def method_x(self, a, b, c): super(FooZ, self).method_x(a, b, c) print "FooZ.method_x(%s, %s, %s, %s)" % (repr(self), repr(a), repr(b), repr(c)) if __name__ == '__main__': main() Traceback (most recent call last): File "foo.py", line 54, in <module> main() File "foo.py", line 8, in main foox.method_x("I", "AM", "X") File "foo.py", line 40, in method_x super(FooX, self).method_x(a, b, c) File "foo.py", line 24, in method_x super(BaseA, self).method_x(a, b, c) File "foo.py", line 18, in method_x super(MyMixin, self).method_x(a, b, c) AttributeError: 'super' object has no attribute 'method_x' -- http://mail.python.org/mailman/listinfo/python-list