是否有标准方法来指定docstring中的回调函数的类型?

时间:2015-10-28 18:49:59

标签: python numpy

我有一个接受回调的函数。是否有标准方法来记录此参数的类型?

def example(callback):
    """Example function.

    Parameters
    ----------
    callback : type
       Description of `callback`.
    """
    print(callback(3, 14))

2 个答案:

答案 0 :(得分:0)

在制定问题时找到答案,但问题本身并未在Google上给出任何结果。

PEP-0484在python中引入了类型注释。例如,采用两个整数并返回一个字符串的回调函数的类型是:

from typing import Callable

Callable[[int, int], str]

答案 1 :(得分:0)

我需要类似的东西,尽管我认为回调应该始终是一个函数,但AFAIK无法指定函数的类型,我一直在重复使用具有相同参数的回调来做不同的事情,所以我想到了

import abc


class BaseCallback(metaclass=abc.ABCMeta):
    def __init__(self, param: int):
        self.param = param
        self.do_things()

    @abc.abstractmethod
    def do_things(self) -> int:
        raise NotImplementedError


class MyCallback(BaseCallback):
    def do_things(self):
        return self.param * 2


def func(callback: BaseCallback):  # type of callback specified
    callback()


func(callback=MyCallback)

您不需要在init中运行do_things方法(这很丑),这取决于您对在何处/何时运行回调有足够的能力。