问题描述
def foo(bar: Callable[[Any],Any]) -> None:
pass
根据注解,我们必须作为参数传递的可调用对象应该只接收一个参数并返回任何内容,就像:
def third_party_callable(x: Any) -> None:
pass
但是我们有自己的可调用对象,它接收 2 个参数,因此我们决定使用 functools.partial 来匹配 foo
签名:
def my_custom_callable(y: Any,x: Any) -> None:
pass
my_callable = partial(my_custom_callable,'my_custom_y')
# And then ...
foo(my_callable)
这将导致一个 linter 警告,指出:预期类型 '(Any) -> None',改为 'partial[None]'
问题 1:有什么方法可以做到这一点而不会收到 linter 警告?
问题 2:partial 的返回类型应该是 Callable[[...],...]
吗?
问题 3:如果我想要的不是期望的行为,有人可以解释原因吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)