[Python-Dev] Quick-and-dirty weak references
M.-A. Lemburg
mal@lemburg.com
Wed, 18 Aug 1999 11:02:02 +0200
[about weakdicts and the possibility of building them on weak
references; the obvious way doesn't clean up the dict itself by
magic; maybe a weak object should be notified when its referent
goes away
]
Here is a new version of my Proxy package which includes a
self managing weak reference mechanism without the need to
add extra bits or bytes to all Python objects:
http://starship.skyport.net/~lemburg/mxProxy-pre0.2.0.zip
The docs and an explanation of how the thingie works are
included in the archive's Doc subdir. Basically it builds
upon the idea I posted earlier on on this thread -- with
a few extra kicks to get it right in the end ;-)
Usage is pretty simple:
from Proxy import WeakProxy
object = []
wr = WeakProxy(object)
wr.append(8)
del object
>>> wr[0]
Traceback (innermost last):
File "<stdin>", line 1, in ?
mxProxy.LostReferenceError: object already garbage collected
I have checked the ref counts pretty thoroughly, but before
going public I would like the Python-Dev crowd to run some
tests as well: after all, the point is for the weak references
to be weak and that's sometimes a bit hard to check.
Hope you have as much fun with it as I had writing it ;-)
Ah yes, for the raw details have a look at the code. The code
uses a list of back references to the weak Proxies and notifies them
when the object goes away... would it be useful to add a hook
to the Proxies so that they can apply some other action as well ?
--
Marc-Andre Lemburg
______________________________________________________________________
Y2000: 135 days left
Business: http://www.lemburg.com/
Python Pages: http://www.lemburg.com/python/