这是 Python 扩展或包装函数中的常见模式,用于**kwargs将所有关键字参数传递给扩展函数。
即采取
class A:
def bar(self, *, a: int, b: str, c: float) -> str:
return f"{a}_{b}_{c}"
class B(A):
def bar(self, **kwargs):
return f"NEW_{super().bar(**kwargs)}"
def base_function(*, a: int, b: str, c: float) -> str:
return f"{a}_{b}_{c}"
def extension(**kwargs) -> str:
return f"NEW_{base_function(**kwargs)}"
Run Code Online (Sandbox Code Playgroud)
现在调用extension(not_existing="a")orB().bar(not_existing="a")会导致TypeError, 可以被静态类型检查器检测到。
如何在运行代码之前注释我的extension或B.bar以便检测到此问题?
此注释也有助于 IDE 为我提供有关extensionor 的正确建议B.bar。