[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] Re: Monkey-patcing virtual methods with functions: change in
From:       Phil Thompson <phil () riverbankcomputing ! co ! uk>
Date:       2009-10-30 16:43:16
Message-ID: 717211a22fce3cb650f8e53bfac0b3af () localhost
[Download RAW message or body]

On Thu, 29 Oct 2009 18:07:33 +0100, Giovanni Bajo <rasky@develer.com>
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?

Phil
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic