Prefer a micropython answer but will accept CPython
I'm implementing a Python function in C.
How do you apply a decorator to Python function written in C?
Prefer a micropython answer but will accept CPython
I'm implementing a Python function in C.
How do you apply a decorator to Python function written in C?
Decorators can be invoked with a function as their argument. So if you would have written this (in Python):
@mydeco
def myfunc(x, y):
return x * y
You can instead write this:
def myimpl(x, y):
return x * y
myfunc = mydeco(myimpl)
You can then move myimpl to C.
If your decorator takes arguments:
myfunc = mydeco(a, b)(myimpl)
@mydeco(1,2,3) def myfunc(...) -> myfunc = mydeco(1,2,3)(myimpl). Double function call parentheses are surprising the first several times you see them, and it's not obvious from the documentation that this is how you do it.