添加参考文献¶
文档中的类型引用¶
始终使用正确的角色指定类型(参见
https://www.sphinx-doc.org/en/1.7/domains.html#python-roles)以确保正确渲染。例如:使用:class:`int`来引用int类型,通常使用:class:`来引用某个类
(参见下面的Path specification)。更多具体说明请参见下文。
路径规范¶
如果在stdlib上:直接使用
。如果是一个类,只需名称即可。如果是一个方法(:meth:)或属性(:attr:),可以使用点号名称(例如:meth:`str.to_lower`)。
示例::class:`int`, :class:`str`, :class:`float`,
:class:`bool`
如果它与文档字符串在同一个文件中,或者对于方法和属性,在同一个类下,那么名称也可以直接指定。
示例::class:`MyClass` 引用同一文件中的一个类;
:meth:`push` 引用同一类中的一个方法;
:meth:`MyClass.push` 引用同一文件中不同类中的一个方法;
:attr:`color` 引用同一类中的一个属性;
:attr:`MyClass.color` 引用同一文件中不同类中的一个属性。
如果它在不同的文件上,那么你可以使用完整的点分名称(例如
~manim.animations.Animation)或者简单地使用缩写方式(~.Animation)。请注意,如果存在歧义,则必须使用完整的点分名称,因为无法推断出实际的类。另外,请注意路径前的~- 这是为了在渲染时只显示Animation而不是完整的位置。只有在需要消除歧义时才能将其移除。
示例: :class:`~.Animation`, :meth:`~.VMobject.set_color`,
:attr:`~.VMobject.color`
如果它是来自不同模块的类,请指定完整的点语法。
示例::class:`numpy.ndarray` 用于表示一个numpy ndarray。
引用类型规范¶
以下说明涉及属性、参数和返回值的类型。 在文本中指定类型时,不一定需要排版。然而,如果它是一个类名、方法或枚举的属性/变体,则建议至少在名称首次出现时进行排版,以便用户可以快速跳转到相关文档。
类名应包裹在
:class:`path_goes_here`中。请参见上一小节中的示例。方法名称应包裹在
:meth:`path_goes_here`中。请参见上一小节中的示例。属性名称应包裹在
:attr:`path_goes_here`中。请参见上一小节中的示例。如果也可以指定
None,请使用Optional[type],其中type必须遵循当前部分的指南。
示例:Optional[:class:`str`] 表示你可以指定一个
str 或 None。
如果可能有多种类型,请使用
Union[type_1, type_2, (...), type_n],其中所有的type_n必须遵循当前部分的指南。请注意,如果其中一种类型是None,则应使用Optional来包装Union。
示例:Union[:class:`str`, :class:`int`] 表示可以是 str 或
int。 Optional[Union[:class:`int`, :class:`bool`]] 表示可以是
int、bool 或 None。
字典: 使用
Dict[key_type, value_type],其中key_type和value_type必须遵循当前部分的指南。
示例:Dict[:class:`str`, :class:`~.Mobject`] 是一个将字符串映射到 Mobjects 的字典。
Dict[:class:`str`, Union[:class:`int`, :class:`MyClass`]] 是一个将字符串映射到整数或 MyClass 实例的字典。
如果参数是一个列表: 请注意,很少需要参数严格为
list类型。通常可以指定一个tuple来代替,例如。因此,为了涵盖所有情况,请考虑:如果参数只需要是一个
Iterable,即如果函数只需要能够遍历此参数的值(例如可以是list、tuple、str,也可以是zip()、iter()等),那么指定Iterable[type_here],其中type_here是可迭代对象生成的元素的类型,并应遵循本节中的格式(Type specifications)。
示例:
Iterable[:class:`str`]用于任何字符串的可迭代对象;Iterable[:class:`~.Mobject`]用于Mobjects的可迭代对象;等等。如果你需要对参数进行索引(即
x[n]) 或获取其长度(即len(x)),或者甚至只是将其传递给 需要这些操作的函数,那么请指定Sequence, 它允许指定任何类似列表的对象(例如list,tuple…)
示例:
Sequence[:class:`str`]表示字符串序列;Sequence[Union[:class:`str`, :class:`int`]]表示整数或字符串序列。如果你出于某种原因明确要求它是一个
list, 那么使用List[type],其中type是列表中任何元素将具有的类型。它必须遵循当前部分的指导原则。
如果返回类型是列表或元组: 对于列表,指定
List[type],对于元组(如果元素都不同),指定Tuple[type_a, type_b, (...), type_n],或者(如果所有元素类型相同)指定Tuple[type, ...]。这些表示中的每个type_n对应于返回列表/元组中的元素,并且必须遵循当前部分的指南。
示例:List[Optional[:class:`str`]] 用于返回元素为 str 或 None 的列表;
Tuple[:class:`str`, :class:`int`] 用于类型为 (str, int) 的元组;
Tuple[:class:`int`, ...] 用于仅包含整数的可变长度元组。