Hey

I'm trying to set up a WeakrefValueDictionary of callables however as 
soon as my method that adds the callable to the dictionary exits the 
value is removed? Is there any way around this?

Example:
import weakref
TEST_EVENT = 1

class TestBinder:
        def __init__( self ):
                self.entries = weakref.WeakValueDictionary()
                
        def BindFunction( self, event_id, function ):
                self.entries[event_id] = function

        def CallFunction( self, event_id, *args ):
                self.entries[event_id]( *args )


class TestCase:
        def __init__( self, binder ):
                binder.BindFunction( TEST_EVENT, self.TestFunction )
                
        def TestFunction():
                print "TestFunction OK"

test_binder = TestBinder()
test_case = TestCase( test_binder )

test_binder.CallFunction( TEST_EVENT )

This generates a KeyError: 1, if I don't use weakrefs, then the TestCase 
object is never cleaned up until TestBinder is destroyed.

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to