Revision: 44520
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at April 13, 2011 07:23 by kylewu
                            
                            Initial Code
def decorator_with_args(decorator_to_enhance) :
    """ 
    This function is supposed to be used as a decorator.
    It must decorate an other function, that is intended to be used as a decorator.
    Take a cup of coffee.
    It will allow any decorator to accept an arbitrary number of arguments,
    saving you the headache to remember how to do that every time.
    """
    # We use the same trick we did to pass arguments
    def decorator_maker(*args, **kwargs) :
        # We create on the fly a decorator that accepts only a function
        # but keeps the passed arguments from the maker .
        def decorator_wrapper(func) :
            # We return the result of the original decorator, which, after all, 
            # IS JUST AN ORDINARY FUNCTION (which returns a function).
            # Only pitfall : the decorator must have this specific signature or it won't work :
            return decorator_to_enhance(func, *args, **kwargs)
        return decorator_wrapper
    return decorator_maker
                                Initial URL
http://stackoverflow.com/questions/739654/understanding-python-decorators
Initial Description
Initial Title
decorator accepts any argument
Initial Tags
python
Initial Language
Python