Partials 函数作为参数和函数参数注释

问题描述

假设我们有一个函数接收一个调用的参数:

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...