[Python-Dev] Weakref design questions (original) (raw)
Brian Quinlan brian@sweetapp.com
Fri, 18 Oct 2002 18:00:28 -0700
- Previous message: [Python-Dev] Weakref design questions
- Next message: [Python-Dev] Weakref design questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guido van Rossum wrote:
The instances of a type need to have a pointer added if the type is to support weak refs to its instances. We've only done this for the obvious candidates like user-defined class instances and a few others. You must weigh the cost of the extra pointer vs. the utility of being able to use weak refs for a particular type.
Fair enough.
I'm sorry, but I don't understand why you're using weak references here at all. Is it really the proxy function that you're after?
I don't understand the question.
If you're worried about the complex object 'o' being referenced after the C library has killed it (a ligitimate concern), while the Python wrapper can be kept alive using the scenario you show, the Python wrapper pyo should set its pointer to 'o' to NULL when o's lifetime ends (or a little before) and make sure that methods on the wrapper raise an exception when the reference is NULL.
That is definitely one possible way to do it. However, I am wrapping a complete DOM, with dozens of objects containing, collectively, hundreds of methods.
Adding an explicit check to each method seemed like a lot more pain than using proxies.
Avoiding explicit checks also offers a potential performance advantage because sometimes the objects are owned and no checking is required. In that case I simply return the object directly without using a proxy.
This is how all well-behaved wrapper objects behave; e.g. file and socket objects in Python check if the file is closed in each method implementation.
They contain far fewer methods. Also, there is more centralization is file and socket objects i.e. they know themselves if they are in a valid state or not, this is not true of my DOM objects.
Cheers, Brian
- Previous message: [Python-Dev] Weakref design questions
- Next message: [Python-Dev] Weakref design questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]