Home > Net >  Python Decorator to force passing arguments explicitly
Python Decorator to force passing arguments explicitly

Time:12-01

I have a function that can receive 3 arguments. Only X is mandatory and I could write this function like

def foo(X, A=None, B=None):
    pass

But I want to force the user to call this function passing explicitly the arguments

foo(X=1, A=2, B=3)
foo(1, 2, 3)  # Error

Is it possible make a decorator for that?

@explicitarguments
def foo(X, A=None, B=None):
    pass

CodePudding user response:

If you can modify the function definition, refer to this question.

A minimal decorator to patch existing functions looks like this:

def explicitarguments(f):
    def f_new(**kwargs):
        return f(**kwargs)        
    return f_new
  • Related