键入一个至少接受一个参数的调用

问题描述 投票:0回答:1

我想知道如何输入提示一个至少接受一个参数的可调用函数。

例如,以下可调用对象是可接受的:

def foo(x: int): ...
def bar(x: int, y: float): ...

class Baz:
  def __call__(self, x: int): ...

但是,以下函数不是:

def noargs(): ...

我尝试过使用

*args
**kwargs
但这会强制接受的可调用对象与其他(实际)参数一起接收它们。

谢谢:)

python
1个回答
0
投票

您可以使用

typing.Concatenate
构建可变参数签名。

from collections.abc import Callable, Any
from typing import Concatenate

def foo(f: Callable[Concatenate[int, ...], None]):
    pass

foo
接受一个可调用对象,该可调用对象至少接受一个
int
类型的(第一个)参数,并接受 0 个或多个附加位置参数(并返回
None
)。

© www.soinside.com 2019 - 2024. All rights reserved.