Исключить пакет Java из jar зависимостей

Да, если вы хотите отказаться от функции, фактически являющейся функцией.

Сначала определите класс для нашего нового типа:

import functools
class reprwrapper(object):
    def __init__(self, repr, func):
        self._repr = repr
        self._func = func
        functools.update_wrapper(self, func)
    def __call__(self, *args, **kw):
        return self._func(*args, **kw)
    def __repr__(self):
        return self._repr(self._func)

Добавьте в декоратор function:

def withrepr(reprfun):
    def _wrap(func):
        return reprwrapper(reprfun, func)
    return _wrap

И теперь мы можем определить репер вместе с функцией:

@withrepr(lambda x: "<Func: %s>" % x.__name__)
def mul42(y):
    return y*42

Теперь repr(mul42) создает '<Func: mul42>'

14
задан Peter Penzov 22 January 2016 в 20:57
поделиться