コード例 #1
0
 def __init__(self, f):
     """
     If there are no decorator arguments, the function
     to be decorated is passed to the constructor.
     """
     PrintUtils.green("Inside __init__()")
     self.f = f
コード例 #2
0
 def __init__(self, arg1, arg2, arg3):
     """
     If there are decorator arguments, the function
     to be decorated is not passed to the constructor!
     """
     PrintUtils.green("Inside __init__()")
     self.arg1 = arg1
     self.arg2 = arg2
     self.arg3 = arg3
コード例 #3
0
 def __call__(self, *args):
     """
     The __call__ method is not called until the
     decorated function is called.
     """
     print
     PrintUtils.green("Inside __call__()")
     self.f(*args)
     PrintUtils.green("After self.f(*args)")
     print
コード例 #4
0
    def __call__(self, f):
        """
        If there are decorator arguments, __call__() is only called
        once, as part of the decoration process! You can only give
        it a single argument, which is the function object.
        """
        PrintUtils.green("Inside __call__()")

        @wraps(f)
        def wrapped_f(*args):
            PrintUtils.green("Inside wrapped_f()")
            print 'Decorator arguments: ', self.arg1, self.arg2, self.arg3
            f(*args)
            PrintUtils.green("After f(*args)")
        return wrapped_f
コード例 #5
0
 def wrapped_f(*args):
     PrintUtils.green("Inside wrapped_f()")
     print 'Decorator arguments: ', self.arg1, self.arg2, self.arg3
     f(*args)
     PrintUtils.green("After f(*args)")