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))


--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to