To fix #1, it would be really nice if you could write code something like the following snippet. Notice especially here that the 'bar' argument gets passed through C.__init__ and A.__init__, into D.__init__, without the previous two having to do anything about it. However, if you ask me to detail how this could *possibly* *ever* work in python, I have no idea. Probably the answer is that it can't.
class A(object): def __init__(self): print "A" next_method
class B(object): def __init__(self): print "B" next_method
Not efficiently, no, but it's *possible*. Just write a 'next_method()' routine that walks the frame stack and self's MRO, looking for a match. You know the method name from f_code.co_name, and you can check each class' __dict__ until you find a function or classmethod object whose code is f_code. If not, move up to the next frame and try again. Once you know the class that the function comes from, you can figure out the "next" method, and pull its args from the calling frame's args, walking backward to other calls on the same object, until you find all the args you need. Oh, and don't forget to make sure that you're inspecting frames that have the same 'self' object.
Of course, the result would be a hideous evil ugly hack that should never see the light of day, but you could *do* it, if you *really really* wanted to. And if you wrote it in C, it might be only 50 or 100 times slower than super(). :)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com