对于 Python 3,它对我来说是一个很好的实践,提示函数参数和返回类型的数据类型。例如:

def icecream_factory(taste: str='Banana') -> Ice:
    ice = Ice(taste)
    ice.add_cream()
    return ice

这适用于所有简单的数据类型和类。但是现在我需要将它与“函数指针”一起使用:
class NotificationRegister:

    def __init__(self):
        self.__function_list = list()
        """:type: list[?????]"""

    def register(self, function_pointer: ?????) -> None:
        self.__function_list.append(function_pointer)

def callback():
    pass

notification_register = NotificationRegister()
notification_register.register(callback)

必须在 ????? 中放置什么才能明确此处需要函数指针?我试过 function ,因为 type(callback)<class 'function'> ,但是没有定义关键字 function

最佳答案

我会用 types.FunctionType 来表示一个函数:

>>> import types
>>> types.FunctionType
<class 'function'>
>>>
>>> def func():
...     pass
...
>>> type(func)
<class 'function'>
>>> isinstance(func, types.FunctionType)
True
>>>

您也可以使用字符串文字,例如 'function' ,但看起来您想要一个实际的类型对象。

10-06 16:14
查看更多