什么相当于python中的@error_wrap装饰器?

时间:2017-12-11 06:27:03

标签: python oop python-decorators

python中某些函数的上面是什么 @error_wrap ? 如下面的代码:

@error_wrap
def disconnect(self):
    """
    disconnect a client.
    """
    logger.info("disconnecting snap7 client")
    return self.library.Cli_Disconnect(self.pointer)

error_wrap方法:

def error_wrap(func):
    """Parses a s7 error code returned the decorated function."""
    def f(*args, **kw):
        code = func(*args, **kw)
        check_error(code, context="client")
    return f

我知道几个OOP修饰的python函数,(@staticmethod,@ classmethod,@ abstractmethod等),但我找不到@error_wrap。
相同的提及这些代码?

1 个答案:

答案 0 :(得分:1)

Python装饰器也是函数,但是作为第一个参数接收其他函数的函数。下面的代码与你的相同

def error_wrap(f):
    # do something with received function f, then return it

def disconnect(self):
    # implementation of your function

disconnect= error_wrap(disconnect) # <- notice the function `disconnect` isn't called

现在你想知道error_wrap函数做了什么。好吧,我们无法回答这个问题,因为它只是另一个功能,所以你应该找到它并粘贴她的代码,然后我们就会回复你。