[PyQt] Calling protected methods on objects
Phil Thompson
phil at riverbankcomputing.com
Mon Sep 1 22:35:31 BST 2008
On Mon, 01 Sep 2008 22:29:37 +0200, Simon Edwards <simon at simonzone.com>
wrote:
> Hello Phil,
>
> I'm busy working on integrating Python with Plasma in KDE 4. The API for
> doing network distributed applets is a bit convoluted, there is a lot of
> delegation of methods calls to other objects. I've hit a part where it
> would be really handy if I could call protected methods on objects which
> were not created by Python itself. SIP appears to explicitly prevent
> this kind of access, although I've commented out the check in
> getComplexCppPtr() and it appears to work fine.
>
> * Is there a technical reason why this is forbidden? or is it more
> philosophical?
>
> * I would like an official way in SIP to call protected
> methods/functions regardless of where the object came from. Perhaps,
> just a way to "unlock" an instance making all of its method available.
> Is this possible?
Hmm...
I'm surprised that it works by just disabling the check as the result is
that you are calling a sub-classes's method. However that method only ever
calls the original protected method and so it is probably safe - highly
illegal, but safe. The same is probably true of protected virtual methods.
The other thing that would worry me is portability.
I need to think this over for a bit to feel comfortable with it.
Phil
More information about the PyQt
mailing list