Kyu*_*chi 4 python mypy python-typing
想象一下,我有一组如下所示的功能。foo有很多不同类型的参数,bar并将所有参数传递给另一个函数。有什么方法可以让 mypy 理解bar与foo不显式复制整个参数列表的类型相同?
def foo(a: int, b: float, c: str, d: bool, *e: str, f: str = "a", g: str = "b") -> str:
...
def bar(*args, **kwargs):
val = foo(*args, **kwargs)
...
return val
Run Code Online (Sandbox Code Playgroud)
有很多关于在此处添加此功能的讨论。对于传递所有参数的简单情况,您可以使用此评论中的配方:
F = TypeVar('F', bound=Callable[..., Any])
class copy_signature(Generic[F]):
def __init__(self, target: F) -> None: ...
def __call__(self, wrapped: Callable[..., Any]) -> F: ...
def f(x: bool, *extra: int) -> str: ...
@copy_signature(f)
def test(*args, **kwargs):
return f(*args, **kwargs)
reveal_type(test) # Revealed type is 'def (x: bool, *extra: int) -> str'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |