阅读 class 方法定义 - 什么是 Callable?

Reading class method definition - what is Callable?

我对 python 比较陌生,在使用包时我开始阅读文档,但我很难理解其中的一些内容:

post_to_main_thread(self: open3d.cpu.pybind.visualization.gui.Application, arg0: open3d::visualization::gui::Window, arg1: Callable[[], None]) → None

这里我唯一不明白的是 arg1 和那个 callable,我在网上找不到关于它的解释。

有趣的问题!

所以post_to_main_thread()是一个接受3个参数(inputs/variables)和returns None.

的方法

因为它是一个方法(与 class 关联的函数,而不仅仅是一个独立的函数)第一个参数 self 指的是 class 的实例函数是.

的一部分

其他两个参数在函数括号内传递,正如独立函数所预期的那样。因此调用可能如下所示:

instance_name = open3d.visualization.gui.Application(...)
instance_name.post_to_main_thread(arg1, arg2)

arg1 应该是 open3d::visualization::gui::Window 类型。这是 class open3d.visualization.gui.Window().

的实例

arg2 应该是 Callable() 类型。这描述了一些内置函数,您可以找到有关 in the documentation 的详细信息。引用:

The subscription syntax must always be used with exactly two values: the argument list and the return type. The argument list must be a list of types or an ellipsis; the return type must be a single type.

所以在这种情况下,类型应该是 Callable[[], None],这意味着这应该是一个不接受输入和 returns None 的函数。继续我们之前的示例,您可以像这样将其作为参数传递:

def my_callable:
   print('Hello, World!')
   return

instance_name.post_to_main_thread(arg1, my_callable)

一切都清楚了吗?