Submodules are available for specialized and more complicated hacks.master
parent
ad73b5af7f
commit
ceb8f35ec3
1 changed files with 32 additions and 0 deletions
@ -0,0 +1,32 @@ |
||||
# $Id: __init__.py,v 1.1 2011-06-08 15:29:14 wirawan Exp $ |
||||
# |
||||
# wpylib.py module |
||||
# Created: 20110608 |
||||
# Wirawan Purwanto |
||||
# |
||||
# Module space for advanced tools requiring low-level python hacks. |
||||
# |
||||
|
||||
import sys |
||||
import new |
||||
|
||||
|
||||
def make_unbound_method(method): |
||||
"""Generates an unbound instance method from a possibly bound |
||||
instance method.""" |
||||
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…
Reference in new issue