On Jun 21, 2009, at 5:23 PM, Scott David Daniels wrote:
Hrvoje Niksic wrote:
...
class class_or_instance(object):
def __init__(self, fn):
self.fn = fn
def __get__(self, obj, cls):
if obj is not None:
return lambda *args, **kwds: self.fn(obj, *args, **kwds)
else:
return lambda *args, **kwds: self.fn(cls, *args, **kwds)
...
Just to polish a bit:
import functools
class ClassOrInstance(object):
def __init__(self, fn):
self._function = fn
self._wrapper = functools.wraps(fn)
def __get__(self, obj, cls):
return self._wrapper(functools.partial(self._function,
cls if obj is None else obj))
from types import MethodType
class ClassOrInstance(object):
def __init__(self, func):
self._func = func
def __get__(self, obj, cls):
return MethodType(self._func, cls if obj is None else obj, cls)
-Miles
--
http://mail.python.org/mailman/listinfo/python-list