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?

Thanks!
-- 
Giovanni Bajo
Develer S.r.l.
http://www.develer.com


_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to