添加参考文献

文档中的类型引用

始终使用正确的角色指定类型(参见 https://www.sphinx-doc.org/en/1.7/domains.html#python-roles)以确保正确渲染。例如:使用:class:`int`来引用int类型,通常使用:class:``​来引用某个类 (参见下面的Path specification)。更多具体说明请参见下文。

路径规范

  1. 如果在stdlib上:直接使用。如果是一个类,只需名称即可。如果是一个方法(:meth:)或属性(:attr:),可以使用点号名称(例如:meth:`str.to_lower`​)。

示例::class:`int`​, :class:`str`​, :class:`float`​, :class:`bool`​

  1. 如果它与文档字符串在同一个文件中,或者对于方法和属性,在同一个类下,那么名称也可以直接指定。

示例::class:`MyClass`​ 引用同一文件中的一个类; :meth:`push`​ 引用同一类中的一个方法; :meth:`MyClass.push`​ 引用同一文件中不同类中的一个方法; :attr:`color`​ 引用同一类中的一个属性; :attr:`MyClass.color`​ 引用同一文件中不同类中的一个属性。

  1. 如果它在不同的文件上,那么你可以使用完整的点分名称(例如 ~manim.animations.Animation)或者简单地使用缩写方式(~.Animation)。请注意,如果存在歧义,则必须使用完整的点分名称,因为无法推断出实际的类。另外,请注意路径前的 ~ - 这是为了在渲染时只显示 Animation 而不是完整的位置。只有在需要消除歧义时才能将其移除。

示例: :class:`~.Animation`​, :meth:`~.VMobject.set_color`​, :attr:`~.VMobject.color`​

  1. 如果它是来自不同模块的类,请指定完整的点语法。

示例::class:`numpy.ndarray`​ 用于表示一个numpy ndarray。

引用类型规范

以下说明涉及属性、参数和返回值的类型。 在文本中指定类型时,不一定需要排版。然而,如果它是一个类名、方法或枚举的属性/变体,则建议至少在名称首次出现时进行排版,以便用户可以快速跳转到相关文档。

  1. 类名应包裹在:class:`path_goes_here`​中。请参见上一小节中的示例。

  2. 方法名称应包裹在:meth:`path_goes_here`​中。请参见上一小节中的示例。

  3. 属性名称应包裹在:attr:`path_goes_here`​中。请参见上一小节中的示例。

  4. 如果也可以指定None,请使用Optional[type],其中 type必须遵循当前部分的指南。

示例:Optional[:class:`str`] 表示你可以指定一个 strNone

  1. 如果可能有多种类型,请使用 Union[type_1, type_2, (...), type_n],其中所有的type_n 必须遵循当前部分的指南。请注意,如果其中一种类型是None,则应使用 Optional来包装Union。

示例:Union[:class:`str`, :class:`int`] 表示可以是 strintOptional[Union[:class:`int`, :class:`bool`]] 表示可以是 intboolNone

  1. 字典: 使用 Dict[key_type, value_type],其中 key_typevalue_type 必须遵循当前部分的指南。

示例:Dict[:class:`str`, :class:`~.Mobject`] 是一个将字符串映射到 Mobjects 的字典。 Dict[:class:`str`, Union[:class:`int`, :class:`MyClass`]] 是一个将字符串映射到整数或 MyClass 实例的字典。

  1. 如果参数是一个列表: 请注意,很少需要参数严格为list类型。通常可以指定一个tuple来代替,例如。因此,为了涵盖所有情况,请考虑:

    1. 如果参数只需要是一个Iterable,即如果函数只需要能够遍历此参数的值(例如可以是listtuplestr,也可以是zip()iter()等),那么指定Iterable[type_here],其中type_here是可迭代对象生成的元素的类型,并应遵循本节中的格式(Type specifications)。

    示例:Iterable[:class:`str`] 用于任何字符串的可迭代对象; Iterable[:class:`~.Mobject`] 用于Mobjects的可迭代对象;等等。

    1. 如果你需要对参数进行索引(即x[n]) 或获取其长度(即len(x)),或者甚至只是将其传递给 需要这些操作的函数,那么请指定Sequence, 它允许指定任何类似列表的对象(例如listtuple…)

    示例:Sequence[:class:`str`] 表示字符串序列; Sequence[Union[:class:`str`, :class:`int`]] 表示整数或字符串序列。

    1. 如果你出于某种原因明确要求它是一个list, 那么使用List[type],其中type是列表中任何元素将具有的类型。它必须遵循当前部分的指导原则。

  2. 如果返回类型是列表或元组: 对于列表,指定 List[type],对于元组(如果元素都不同),指定 Tuple[type_a, type_b, (...), type_n],或者(如果所有元素类型相同)指定 Tuple[type, ...]。这些表示中的每个 type_n 对应于返回列表/元组中的元素,并且必须遵循当前部分的指南。

示例:List[Optional[:class:`str`]] 用于返回元素为 strNone 的列表; Tuple[:class:`str`, :class:`int`] 用于类型为 (str, int) 的元组; Tuple[:class:`int`, ...] 用于仅包含整数的可变长度元组。