'Safe' and reusable weak references to instance methods
The BoundMethodWeakref class is accessible via the
BoundMethodWeakref objects provide a mechanism for
referencing a bound method without requiring that the
method object itself (which is normally a transient
object) is kept alive. Instead, the BoundMethodWeakref
object keeps weak references to both the object and the
function which together define the instance method.
- key -- the identity key for the reference, calculated
- by the class's calculateKey method applied to the
target instance method
- deletionMethods -- sequence of callable objects taking
- single argument, a reference to this object which
will be called when either the target object or
target function is garbage collected (i.e. when
this object becomes invalid). These are specified
as the onDelete parameters of safeRef calls.
weakSelf -- weak reference to the target object
weakFunc -- weak reference to the target function
- Class Attributes:
- _allInstances -- class attribute pointing to all live
- BoundMethodWeakref objects indexed by the class's
calculateKey(target) method applied to the target
objects. This weak value dictionary is used to
short-circuit creation so that multiple references
to the same (object, function) pair produce the
same BoundMethodWeakref instance.
Abstract classes can override this to customize issubclass().
This is invoked early on by abc.ABCMeta.__subclasscheck__().
It should return True, False or NotImplemented. If it returns
NotImplemented, the normal algorithm is used. Otherwise, it
overrides the normal algorithm (and the outcome is cached).
__sizeof__() -> int
size of object in memory, in bytes
__init__(self, target, onDelete=None)
Return a weak-reference-like instance for a bound method
- target -- the instance-method target for the weak
reference, must have im_self and im_func attributes
and be reconstructable via:
target.im_func.__get__( target.im_self )
which is true of built-in instance methods.
- onDelete -- optional callback which will be called
- when this weak reference ceases to be valid
(i.e. either the object or the function is garbage
collected). Should take a single argument,
which will be passed a pointer to this object.
Calculate the reference key for this reference
Currently this is a two-tuple of the id()'s of the
target object and the target function respectively.
Whether we are still a valid reference
Compare with another reference
Return a strong reference to the bound method
If the target cannot be retrieved, then will
return None, otherwise returns a bound instance
method for our object and function.
- You may call this method any number of times,
as it does not invalidate the reference.
for more information.