On Fri, 30 Oct 2009 17:11:28 +0000, Phil Thompson <[email protected]> wrote: > On Fri, 30 Oct 2009 16:43:16 +0000, Phil Thompson > <[email protected]> wrote: >> On Thu, 29 Oct 2009 18:07:33 +0100, Giovanni Bajo <[email protected]> >> wrote: >>> Hi Phil, >>> >>> it looks like SIP 4.9 changed behaviour wrt monkey-patching of virtual >>> methods. If you use a regular Python function (or a lambda) to do the >>> monkey patching, the function is passed 'self' when it's invoked. >>> >>> This change in behaviour is undocumented among the incompatibilities >>> with earlier versions. Moreover, it break existing code in a way that it >>> is hard to fix (there is no easy way to grep all occurrences); it is >>> also hard to debug because the resulting exception (eg: "function takes >>> no argument (1 given)") does not usually have any traceback attached. >>> Lastly, it does not match what Python itself does when monkey-patching a >>> method with a function; with regular Python objects, the function is not >>> passed 'self' when it's invoked as a method. >>> >>> What's your position on this? Was this change in behaviour a rationale >>> choice or just an unwanted regression? >> >> It should behave in the same way as regular Python classes do - which it >> does (both for Python v2 and v3) in my tests. >> >> Can you provide me with a test which shows different behavior? > > Ahh - hang on, just realised my test is broken...
Fixed in tonight's SIP snapshot. It was fine when patching classes but behaved differently to Python when patching instances. Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
