Классы декоратора в Python

sc.wholeTextFiles (путь) должен помочь. Он дает rdd (filepath, filecontent).

38
задан Staale 20 March 2009 в 14:20
поделиться

3 ответа

Пустой класс декоратора был бы похож на это:

class NullDecl (object):
   def __init__ (self, func):
      self.func = func
      for name in set(dir(func)) - set(dir(self)):
        setattr(self, name, getattr(func, name))

   def __call__ (self, *args):
      return self.func (*args)

И затем можно обычно применять его:

@NullDecl
def myFunc (x,y,z):
   return (x+y)/z
23
ответ дан Staale 10 October 2019 в 07:59
поделиться

модуль декоратора помогает Вам пишущий сохраняющим подпись декораторам.

И PythonDecoratorLibrary мог бы предоставить полезные примеры декораторам.

10
ответ дан f3lix 10 October 2019 в 07:59
поделиться

Для создания декоратора, который обертывает функции в вопрос, которые делают их неотличимыми от исходной функции используйте functools.wraps.

Пример:


def mydecorator(func):
    @functools.wraps(func):
    def _mydecorator(*args, **kwargs):
        do_something()
        try:
            return func(*args, **kwargs)
        finally:
            clean_up()
    return _mydecorator

# ... and with parameters
def mydecorator(param1, param2):
    def _mydecorator(func):
        @functools.wraps(func)
        def __mydecorator(*args, **kwargs):
            do_something(param1, param2)
            try:
                return func(*args, **kwargs)
            finally:
                clean_up()
        return __mydecorator
    return _mydecorator

(мое персональное предпочтение состоит в том, чтобы создать декораторов, использующих функции, не классы)

упорядочивание декораторов следующие:


@d1
@d2
def func():
    pass

# is equivalent to
def func():
    pass

func = d1(d2(func))
7
ответ дан codeape 10 October 2019 в 07:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: