Vincent van Beveren wrote:

I was working with weak references in Python, and noticed that it
> was impossible to create a weak-reference of bound methods.

> is there anything I can do about it?

You can create your own wrapper that keeps a weak reference to
the underlying object. Here's an example.

import weakref

class weakmethod(object):

  def __init__(self, bm):
    self.ref = weakref.ref(bm.im_self)
    self.func = bm.im_func

  def __call__(self, *args, **kwds):
    obj = self.ref()
    if obj is None:
      raise ValueError("Calling dead weak method")
    self.func(obj, *args, **kwds)

if __name__ == "__main__":

  class A(object):

    def foo(self):
      print "foo method called on", self

  a = A()
  m = weakmethod(a.foo)
  m()
  del a
  m()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to