[Python-Dev] Weakref design questions
Brian Quinlan
brian@sweetapp.com
Fri, 18 Oct 2002 21:44:39 -0700
Martin wrote:
> So you merely want a proxy, not a weak proxy: both for the
> entire object, and for the methods. So for this code, you
> can save the proxy, and return your callable object. Make
> the null pointer check in its tp_call slot, and don't kill
> it after py func call, but merely clear the pointer.
As you say, I need a proxy for my methods and a proxy for my objects.
Creating my own proxy type for methods is easy, since the only
interesting thing that must be proxied is __call__.
Creating my own proxy type for arbitrary objects is harder because I
must create a proxy for every slot that I use. That requires duplication
a lot of the work that already lives in weakrefobject.c
Also, for both method and object proxies, I have to invent a mechanism
to signal that the original object is dead. weakrefobject.c already
defines a nice mechanism.
> I also notice that you rely on the fact that Python code has no way
> to find out the underlying object of a weak proxy. I think this is a
weak
> assumption - there is no guarantee that this is not possible, or might
> not be possible in the future.
This is a concern. If I am mistaken in my assumption, please let me know
and I will either invent my own proxy type or use the
check-on-every-method-call technique.
Cheers,
Brian