Python 是否有使用Sphinx.ext.poleon在Sphinx中记录函数类型参数的标准格式?

Python 是否有使用Sphinx.ext.poleon在Sphinx中记录函数类型参数的标准格式?,python,python-sphinx,type-hinting,docstring,sphinx-napoleon,Python,Python Sphinx,Type Hinting,Docstring,Sphinx Napoleon,我正在使用Sphinx来记录我的一个项目,其中一个类在其\uuuu init\uuuu中将函数作为参数。是否有记录此函数类型参数的标准方法?我还使用谷歌格式为我的文档字符串 下面是一个例子: 类示例类: “”“演示我的问题的示例类 Args: func(这里是什么?):参数的描述 """ 定义初始化(self,func): self.func=func def do_某事(自身、参数): “示例方法” Args: param(str):param的描述 返回: bool:返回描述 """ 返回s

我正在使用Sphinx来记录我的一个项目,其中一个类在其
\uuuu init\uuuu
中将函数作为参数。是否有记录此函数类型参数的标准方法?我还使用谷歌格式为我的文档字符串

下面是一个例子:

类示例类:
“”“演示我的问题的示例类
Args:
func(这里是什么?):参数的描述
"""
定义初始化(self,func):
self.func=func
def do_某事(自身、参数):
“示例方法”
Args:
param(str):param的描述
返回:
bool:返回描述
"""
返回self.func(参数)

在我的代码中,有问题的参数应该接受一个
str
,并返回一个
bool
。在使用Sphinx时,是否有标准的方法记录这一点?

记录函数参数的最简单方法是使用。通过这样做,静态类型检查器将验证所传递函数的签名(参数和返回类型)是否与类型提示兼容

输入import Callable
课堂范例课堂二:
“”“演示我的问题的示例类。
Args:
func(可调用[[str],bool]):参数的说明。
"""
定义初始化(self,func:Callable[[str],bool]):
self.func=func
然而,这有一个潜在的问题。如果查看Python数据模型,请参见。您会注意到有几种可能的类型是可调用的,任何具有指定签名的可调用类型都不会导致静态类型检查器发出警告。 例如,实现
\uuuu call\uuuu()
方法的类实例不会导致警告:

def str_函数(参数:str)->bool:
通过
一类实例:
定义初始化(self,param):
通过
定义调用(self,参数:str)->bool:
通过
一个实例=一个实例(“测试实例”)
#以下两种情况均不会引发静态类型检查警告
一=示例类二(str_函数)
二=示例二(一个实例)
您可以键入如上所示的提示
param
签名,同时验证
param
是否属于
\uuuu init\uuuu
中的类型,就像您在运行时验证其他参数一样,如果参数不是函数,则引发
TypeError
异常

输入import Callable
从类型导入函数类型
课堂范例课堂二:
“”“演示我的问题的示例类
Args:
func(可调用[[str],bool]):参数的说明
提出:
TypeError:参数'param'不是'FunctionType'类型。
"""
定义初始化(self,func:Callable[[str],bool]):
如果(FunctionType,)中的类型(func):
self.func=func
其他:
raise TypeError(“参数必须初始化为`FunctionType``.”)
可以将两种需求结合起来,即
Callable[[str],bool]
FunctionType
,因为我还没有尝试过这种方法

最后包括一些可能导致静态类型检查器发出警告的示例:

def int_函数(参数:int)->bool:
通过
类示例类:
“”“演示我的问题的示例类
Args:
func(FunctionType):参数的说明
"""
定义初始化(self,func:FunctionType):
self.func=func
three=ExampleClass(str_函数(“测试字符串”))#预期类型为'FunctionType',改为'bool'
four=ExampleClass(str#u函数)#应为'FunctionType',而应为'got'(param:str)->bool'
five=ExampleClass(类型(str_函数))#无警告five.func为{type}
six=ExampleClass2(int_函数(2))#预期类型“(str)->bool”,改为“bool”
seven=exampleClass2(str_函数(“测试字符串”))#预期类型“(str)->bool”,改为“bool”
八=ExampleClassTwo(int#u函数)#预期类型'(str)->bool',got'(param:int)->bool'
九=示例二(str#u函数)#无警告

这有帮助吗?