私はinspect
モジュールを使用して、関数のシグネチャを変更してみました:私は、関数のシグネチャを検査する場合関数のシグネチャを設定する方法は?
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
、それは新しい署名を示しています。
>>> inspect.signature(some_func)
>>> <Signature (a, b, c)>
をしかし、私は関数を呼び出すしようとすると、新しいシグネチャによれば、TypeErrorが発生します。
>>> some_func(1, 2, 3)
>>> TypeError: some_func() takes 2 positional arguments but 3 were given
どのようにシグネチャを設定して、interpr eterは元の署名ではなく新しい署名と引数を比較しますか?