Ich habe versucht, die Signatur einer Funktion zu ändern mit dem inspect
Modul:Wie setze ich die Signatur einer Funktion?
import inspect
def some_func(a, b):
return
sig = inspect.signature(some_func)
new_params = list(sig.parameters.values()) + [inspect.Parameter('c', inspect._ParameterKind.POSITIONAL_OR_KEYWORD)]
new_sig = sig.replace(parameters=new_params)
some_func.__signature__ = new_sig
Wenn ich die Funktion der Signatur überprüfen, zeigt die neue Signatur:
>>> inspect.signature(some_func)
>>> <Signature (a, b, c)>
Aber wenn ich versuche, um die Funktion aufzurufen nach der neuen Signatur, erhalte ich eine Typeerror:
>>> some_func(1, 2, 3)
>>> TypeError: some_func() takes 2 positional arguments but 3 were given
Wie kann ich die Unterschrift gesetzt, so dass der Interpr eter prüft die Argumente gegen die neue Signatur anstelle der ursprünglichen?