@@ -3296,24 +3296,32 @@ msgid ""
32963296" ``dict[str, float]`` and ``tuple[str, bytes]`` all result in "
32973297":meth:`~object.__class_getitem__` being called::"
32983298msgstr ""
3299+ "在 Python 中,所有的类自身也是其他类的实例。 一个类所属的类被称为该类的 :term:`metaclass`,并且大多数类都将 "
3300+ ":class:`type` 类作为它们的元类。 :class:`type` 没有定义 :meth:`~object.__getitem__`,这意味着 "
3301+ "``list[int]``, ``dict[str, float]`` 和 ``tuple[str, bytes]`` 这样的表达式都将导致 "
3302+ ":meth:`~object.__class_getitem__` 被调用::"
32993303
33003304#: ../../reference/datamodel.rst:2309
33013305msgid ""
33023306"However, if a class has a custom metaclass that defines "
33033307":meth:`~object.__getitem__`, subscribing the class may result in different "
33043308"behaviour. An example of this can be found in the :mod:`enum` module::"
33053309msgstr ""
3310+ "然而,如果一个类属于定义了 :meth:`~object.__getitem__` 的自定义元类,则抽取该类可能导致不同的行为。 这方面的一个例子可以在"
3311+ " :mod:`enum` 模块中找到::"
33063312
33073313#: ../../reference/datamodel.rst:2334
33083314msgid ":pep:`560` - Core Support for typing module and generic types"
3309- msgstr ""
3315+ msgstr ":pep:`560` - 对 typing 模块和泛型的核心支持 "
33103316
33113317#: ../../reference/datamodel.rst:2333
33123318msgid ""
33133319"Introducing :meth:`~object.__class_getitem__`, and outlining when a "
33143320":ref:`subscription<subscriptions>` results in ``__class_getitem__()`` being "
33153321"called instead of :meth:`~object.__getitem__`"
33163322msgstr ""
3323+ "介绍 :meth:`~object.__class_getitem__`,并指明 :ref:`抽取 <subscriptions>` 在何时会导致 "
3324+ "``__class_getitem__()`` 而不是 :meth:`~object.__getitem__` 被调用"
33173325
33183326#: ../../reference/datamodel.rst:2341
33193327msgid "Emulating callable objects"
@@ -3368,6 +3376,25 @@ msgid ""
33683376"container; for mappings, :meth:`__iter__` should iterate through the "
33693377"object's keys; for sequences, it should iterate through the values."
33703378msgstr ""
3379+ "可以定义下列方法来实现容器对象。 窗口通常属于 :term:`序列 <sequence>` (如 :class:`列表 <list>` 或 "
3380+ ":class:`元组 <tuple>`) 或者 :term:`映射 <mapping>` (如 :class:`字典 "
3381+ "<dict>`),但也有表现为其他形式的容器。 前几个方法被用来模拟序列或是模拟映射;两者的不同之处在于序列允许的键应为整数 *k* 并且 ``0 <="
3382+ " k < N`` 其中 *N* 是序列或 :class:`slice` 对象的长度,它们定义了条目的范围。 此外还建议让映射提供 "
3383+ ":meth:`keys`, :meth:`values`, :meth:`items`, :meth:`get`, :meth:`clear`, "
3384+ ":meth:`setdefault`, :meth:`pop`, :meth:`popitem`, :meth:`!copy` 以及 "
3385+ ":meth:`update` 等方法,它们的行为应与 Python 的标准 :class:`字典 <dict>` 对象类似。 此外 "
3386+ ":mod:`collections.abc` 模块提供了一个 :class:`~collections.abc.MutableMapping` "
3387+ ":term:`abstract base class` 以便根据由 :meth:`~object.__getitem__`, "
3388+ ":meth:`~object.__setitem__`, :meth:`~object.__delitem__` 和 :meth:`keys` "
3389+ "组成的基本集来创建所需的方法。 可变序列还应提供 :meth:`append`, :meth:`count`, :meth:`index`, "
3390+ ":meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`, :meth:`reverse`"
3391+ " 和 :meth:`sort` 等方法,就像 Python 的标准 :class:`list` 对象那样。 最后,序列类型还应通过定义下文描述的 "
3392+ ":meth:`~object.__add__`, :meth:`~object.__radd__`, :meth:`~object.__iadd__`,"
3393+ " :meth:`~object.__mul__`, :meth:`~object.__rmul__` 和 "
3394+ ":meth:`~object.__imul__` 等方法来实现加法(指拼接)和乘法(指重复);它们不应定义其他数值运算符。 此外还建议映射和序列都实现 "
3395+ ":meth:`~object.__contains__` 方法以允许高效地使用 ``in`` 运算符;对于映射,``in`` "
3396+ "应当搜索映射的键;对于序列,则应当搜索其中的值。 另外还建议映射和序列都实现 :meth:`~object.__iter__` "
3397+ "方法以允许高效地迭代容器中的条目;对于映射,:meth:`__iter__` 应当迭代对象的键;对于序列,则应当迭代其中的值。"
33713398
33723399#: ../../reference/datamodel.rst:2397
33733400msgid ""
@@ -3430,6 +3457,11 @@ msgid ""
34303457":term:`mapping` types, if *key* is missing (not in the container), "
34313458":exc:`KeyError` should be raised."
34323459msgstr ""
3460+ "调用此方法以实现 ``self[key]`` 的未付。 对于 :term:`sequence` 类型,接受的键应为整数和切片对象。 "
3461+ "请注意负数索引(如果类想要模拟 :term:`sequence` 类型)的特殊解读是依赖于 :meth:`__getitem__` 方法。 如果 "
3462+ "*key* 的类型不正确,则会引发 :exc:`TypeError`;如果为序列索引集范围以外的值(在进行任何负数索引的特殊解读之后),则应当引发 "
3463+ ":exc:`IndexError`。 对于 :term:`mapping` 类型,如果 *key* 找不到(不在容器中),则应当引发 "
3464+ ":exc:`KeyError`。"
34333465
34343466#: ../../reference/datamodel.rst:2452
34353467msgid ""
@@ -3443,6 +3475,9 @@ msgid ""
34433475":meth:`~object.__class_getitem__` may be called instead of "
34443476"``__getitem__()``. See :ref:`classgetitem-versus-getitem` for more details."
34453477msgstr ""
3478+ "当 :ref:`抽取 <subscriptions>` 一个 *class* 时,可能会调用特殊类方法 "
3479+ ":meth:`~object.__class_getitem__` 而不是 ``__getitem__()``。 请参阅 "
3480+ ":ref:`classgetitem-versus-getitem` 了解详情。"
34463481
34473482#: ../../reference/datamodel.rst:2465
34483483msgid ""
@@ -3483,6 +3518,8 @@ msgid ""
34833518"the objects in the container. For mappings, it should iterate over the keys"
34843519" of the container."
34853520msgstr ""
3521+ "此方法会在需要为一个容器创建 :term:`iterator` 时被调用。 此方法应当返回一个新的迭代器对象,它可以对容器中的所有对象执行迭代。 "
3522+ "对于映射,它应当对窗口中的键执行迭代。"
34863523
34873524#: ../../reference/datamodel.rst:2497
34883525msgid ""
@@ -3679,6 +3716,8 @@ msgid ""
36793716"The built-in function :func:`int` falls back to :meth:`__trunc__` if neither"
36803717" :meth:`__int__` nor :meth:`__index__` is defined."
36813718msgstr ""
3719+ "如果 :meth:`__int__` 或 :meth:`__index__` 均未被定义则内置函数 :func:`int` 会回退至 "
3720+ ":meth:`__trunc__`。"
36823721
36833722#: ../../reference/datamodel.rst:2699
36843723msgid "With Statement Context Managers"
0 commit comments