* hacks.py: Added make_unbound_method to allow general function to participate

as hacked class methods.
master
wirawan 14 years ago
parent ceb8f35ec3
commit 424a9238bb
  1. 18
      hacks.py

@ -1,5 +1,5 @@
# #
# $Id: hacks.py,v 1.1 2011-06-03 21:31:59 wirawan Exp $ # $Id: hacks.py,v 1.2 2011-06-08 15:49:04 wirawan Exp $
# #
# Created: 20110603 # Created: 20110603
# Wirawan Purwanto # Wirawan Purwanto
@ -11,7 +11,21 @@
import sys import sys
import new import new
def make_unbound_instance_method(method): def make_unbound_method(method):
"""Generates an unbound instance method from a possibly bound """Generates an unbound instance method from a possibly bound
instance method.""" instance method."""
return new.instancemethod(method.im_func, None, method.im_class) return new.instancemethod(method.im_func, None, method.im_class)
def make_unbound_method(method):
"""Generates an unbound instance method from a possibly bound
instance method, or even user-defined function.
This is useful for injecting external, completely unrelated function
as an instance procedure into a class, without having to subclass
the whole thing.
CAVEAT: This is a haram trick. Know what you are doing."""
try:
return new.instancemethod(method.im_func, None, method.im_class)
except AttributeError:
# Assume this is a static method or user-defined external method
# injected into this class.
return method

Loading…
Cancel
Save