@@ -12,7 +12,7 @@ msgid ""
12
12
msgstr ""
13
13
"Project-Id-Version : Python 3.11\n "
14
14
"Report-Msgid-Bugs-To : \n "
15
- "POT-Creation-Date : 2024-07-26 15:21 +0000\n "
15
+ "POT-Creation-Date : 2024-07-29 05:06 +0000\n "
16
16
"PO-Revision-Date : 2023-05-24 02:23+0000\n "
17
17
"Last-Translator : Rafael Fontenelle <rffontenelle@gmail.com>, 2024\n "
18
18
"Language-Team : Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n "
@@ -265,8 +265,8 @@ msgid ""
265
265
" when class inheritance or an arbitrary :meth:`!__getattr__` hook were in "
266
266
"use this could still be inaccurate."
267
267
msgstr ""
268
- "在以前的 Python 版本中,没有一致的方法来发现对象支持的属性和方法。 有一些非正式的约定,例如定义 :attr:`!__members__` 和 "
269
- ":attr:`!__methods__` 属性,这些属性是名称列表,但扩展类型或类的作者往往不会去定义它们。你可以退而求其次,检查对象的 "
268
+ "在以前的 Python 版本中,没有一致的方式来发现对象支持的属性和方法。 有一些非正式的约定,例如定义 :attr:`!__members__` 和 "
269
+ ":attr:`!__methods__` 属性,这些属性是名称列表,但扩展类型或类的作者往往不会去定义它们。 你可以回退到检查对象的 "
270
270
":attr:`~object.__dict__` 属性,但在使用类继承或任意的 :meth:`!__getattr__` 钩子时,这仍然可能是不准确的。"
271
271
272
272
#: ../../whatsnew/2.2.rst:163
@@ -326,8 +326,9 @@ msgid ""
326
326
"methods are passed the class of the object, but not the object itself. "
327
327
"Static and class methods are defined like this::"
328
328
msgstr ""
329
- "对于方法,:meth:`!descriptor.__get__` "
330
- "返回一个可调用的临时对象,它将实例和要调用的方法封装在一起。这也是为什么现在可以实现静态方法和类方法的原因;它们有描述符,可以只封装方法,或者封装方法和类。作为对这些新方法类型的简要说明,静态方法不传递实例,因此类似于常规函数。类方法传递对象的类,但不传递对象本身。静态方法和类方法的定义如下:"
329
+ "对于方法,:meth:`!descriptor.__get__` 返回一个可调用的临时对象,它将实例和要调用的方法封装在一起。 "
330
+ "这也是为什么现在可以实现静态方法和类方法的原因;它们有描述器,可以只封装方法,或者封装方法和类。 "
331
+ "作为对这些新方法类型的简要说明,静态方法不传递实例,因此类似于常规函数。 类方法传递对象的类,但不传递对象本身。 静态方法和类方法的定义如下::"
331
332
332
333
#: ../../whatsnew/2.2.rst:207
333
334
msgid ""
@@ -337,9 +338,9 @@ msgid ""
337
338
"static f``, ``defstatic f()``, or something like that) but no such syntax "
338
339
"has been defined yet; that's been left for future versions of Python."
339
340
msgstr ""
340
- ":func:`staticmethod` 函数接收函数 :func:`!f` , 并将其封装在描述符中返回,这样它就可以存储在类对象中。 "
341
- "您可能希望有特殊的语法来创建这样的方法 (``def static f`` ,``defstatic f()``, "
342
- "或类似的东西),但目前还没有定义这样的语法;这要留待 Python 的未来版本来解决 。"
341
+ ":func:`staticmethod` 函数接收函数 :func:`!f`, 并将其封装在描述符中返回,这样它就可以存储在类对象中。 "
342
+ "您可能希望有特殊的语法来创建这样的方法 (``def static f`` ,``defstatic f()`` "
343
+ "或类似的东西),但目前还没有定义这样的语法;这要留待 Python 的未来版本去解决 。"
343
344
344
345
#: ../../whatsnew/2.2.rst:213
345
346
msgid ""
@@ -363,9 +364,9 @@ msgid ""
363
364
" the ZODB or whatever, but most users will just write code on top of the "
364
365
"resulting libraries and ignore the implementation details."
365
366
msgstr ""
366
- "请注意,使用新 :func:`!eiffelmethod` 的人不必了解任何关于描述符的知识。 "
367
- "这就是我认为新功能不会增加语言基本复杂性的原因。 会有一些向导需要了解它,以便编写 :func:`!eiffelmethod` 或 ZODB "
368
- "或其他内容,但大多数用户只会在生成的库之上编写代码,而不会理会实现细节 。"
367
+ "请注意,使用新 :func:`!eiffelmethod` 的人不必了解任何关于描述器的知识。 这就是我认为新功能不会增加语言基本复杂性的原因。 "
368
+ "会有一些向导需要了解它,以便编写 :func:`!eiffelmethod` 或 ZODB "
369
+ "或其他内容,但大多数用户只会在生成的库之上编写代码,而会忽略其实现细节 。"
369
370
370
371
#: ../../whatsnew/2.2.rst:244
371
372
msgid "Multiple Inheritance: The Diamond Rule"
@@ -389,10 +390,10 @@ msgid ""
389
390
":class:`!C`'s :meth:`!save` method is saving some internal state specific to"
390
391
" :class:`!C`, not calling it will result in that state never getting saved."
391
392
msgstr ""
392
- "经典类的查找规则很简单,但并不高明;基类的查找是深度优先的,从左到右依次查找。 对 :meth:`!D.save` 的引用将搜索类 "
393
- ":class:`!D` 、:class:`!B` ,然后是 :class:`!A` ,其中 :meth:`!save` "
394
- "将被找到并返回。 :meth:`!C.save` 根本不会被找到。 这很糟糕,因为如果 :class:`!C` 的 :meth:`!save` "
395
- "方法正在保存 :class:`!C` 特有的某些内部状态,不调用该方法将导致该状态永远不会被保存。"
393
+ "经典类的查找规则很简单,但并不高明;基类的查找是深度优先的,从左到右依次查找。 对 :meth:`!D.save` 的引用将搜索类 "
394
+ ":class:`!D`、:class:`!B`,然后是 :class:`!A`,其中 :meth:`!save` 将被找到并返回。 "
395
+ ":meth:`!C.save` 根本不会被找到。 这很糟糕,因为如果 :class:`!C` 的 :meth:`!save` 方法正在保存 "
396
+ ":class:`!C` 特有的某些内部状态,不调用该方法将导致该状态永远不会被保存。"
396
397
397
398
#: ../../whatsnew/2.2.rst:272
398
399
msgid ""
@@ -412,7 +413,7 @@ msgid ""
412
413
"list of visited classes is [:class:`!D`, :class:`!B`, :class:`!A`, "
413
414
":class:`!C`, :class:`!A`]."
414
415
msgstr ""
415
- "按照经典的查找规则列出所有基类,如果一个类被重复访问,则将其包含多次。 在上例中,已访问过的类列表为 "
416
+ "按照经典的查找规则列出所有基类,如果一个类被重复访问,则将其包含多次。 在上例中,已访问过的类列表为 "
416
417
"[:class:`!D`,:class:`!B`,:class:`!A`,:class:`!C`,:class:`!A`]。"
417
418
418
419
#: ../../whatsnew/2.2.rst:282
@@ -422,7 +423,7 @@ msgid ""
422
423
"list becomes [:class:`!D`, :class:`!B`, :class:`!C`, :class:`!A`] after "
423
424
"dropping duplicates."
424
425
msgstr ""
425
- "扫描列表,查找重复的类。 如果发现有重复的类,则删除所有重复的类,只留下列表中*后一个。 在上例中,删除重复后的列表变成 "
426
+ "扫描列表来查找重复的类。 如果发现有重复的类,则删除所有重复的类,只留下列表中*后一个。 在上例中,删除重复后的列表变成 "
426
427
"[:class:`!D`,:class:`!B`,:class:`!C`,:class:`!A`]。"
427
428
428
429
#: ../../whatsnew/2.2.rst:287
@@ -437,10 +438,10 @@ msgid ""
437
438
"in the superclass; for example, :class:`!D`'s :meth:`!save` method would "
438
439
"look like this::"
439
440
msgstr ""
440
- "根据这条规则,引用 :meth:`!D.save` 将返回 :meth:`!C.save` ,这正是我们想要的行为。 这一查找规则与 Common "
441
- "Lisp 遵循的规则相同。 新的内置函数 :func:`super` 提供了一种无需重新实现 Python 算法就能获取类的超类的方法。最常用的形式是"
442
- " ``super(class, obj)`` ,它返回一个绑定的超类对象(而不是实际的类对象)。 "
443
- "这种形式将用于调用超类中的方法;例如,:class:`!D` 的 :meth:`!save` 方法看起来像这样: "
441
+ "根据这条规则,引用 :meth:`!D.save` 将返回 :meth:`!C.save`,这正是我们想要的行为。 这一查找规则与 Common "
442
+ "Lisp 遵循的规则相同。 新的内置函数 :func:`super` 提供了一种无需重新实现 Python 算法就能获取类的超类的方法。 最常用的形式是"
443
+ " ``super(class, obj)`` ,它返回一个绑定的超类对象(而不是实际的类对象)。 "
444
+ "这种形式将用于调用超类中的方法;例如,:class:`!D` 的 :meth:`!save` 方法看起来像这样:: "
444
445
445
446
#: ../../whatsnew/2.2.rst:303
446
447
msgid ""
@@ -502,10 +503,10 @@ msgid ""
502
503
"with this in mind. Finally, calling a function on every attribute access "
503
504
"results in a sizable performance loss."
504
505
msgstr ""
505
- "然而,Python 2.2 对 :dfn:`properties` 的支持通常是捕获属性引用的更简单方法。编写 :meth:`!__getattr__` "
506
- " 方法非常复杂,因为为了避免递归,你不能在其中使用常规的属性访问,而是不得不处理 :attr:`~object.__dict__` "
507
- "的内容。此外,:meth:`~object.__getattr__` 方法在 Python 检查其他例如 "
508
- ":meth:`~object.__repr__` 或 :meth:`!__coerce__` "
506
+ "然而,Python 2.2 对 :dfn:`properties` 的支持通常是捕获属性引用的更简单方法。 编写 "
507
+ ":meth:`!__getattr__` 方法非常复杂,因为为了避免递归,你不能在其中使用常规的属性访问,而是不得不处理 "
508
+ ":attr:`~object.__dict__` 的内容。 此外,:meth:`~object.__getattr__` 方法在 Python "
509
+ "检查其他例如 :meth:`~object.__repr__` 或 :meth:`!__coerce__` "
509
510
"等方法时也会被调用,因此在编写时需要考虑这些情况。最后,每次属性访问都调用一个函数会导致显著的性能损失。"
510
511
511
512
#: ../../whatsnew/2.2.rst:337
@@ -517,7 +518,7 @@ msgid ""
517
518
msgstr ""
518
519
":class:`property` "
519
520
"是一种新的内置类型,它打包了三个用于获取、设置或删除属性的函数,以及一个文档字符串。例如,如果你想定义一个计算得出的属性 "
520
- ":attr:`!size`,同时又希望这个属性是可设置的,你可以这样写: "
521
+ ":attr:`!size`,同时又希望这个属性是可设置的,你可以这样写:: "
521
522
522
523
#: ../../whatsnew/2.2.rst:357
523
524
msgid ""
@@ -574,8 +575,8 @@ msgid ""
574
575
" more detail about the new features while still remaining quite easy to "
575
576
"read."
576
577
msgstr ""
577
- ":ref:`descriptorhowto` 是由 Guido van Rossum "
578
- "编写的一篇详细教程,介绍了描述符功能。 如果我的描述激起了你的兴趣,请继续阅读这篇教程,因为它更加详细地介绍了这些新功能,同时仍然保持了相当的易读性。"
578
+ ":ref:`descriptorhowto` 是由 Guido van Rossum 编写的一篇介绍描述器特性详细教程。 "
579
+ "如果我的描述激起了你的兴趣,请继续阅读这篇教程,因为它更加详细地介绍了这些新功能,同时仍然保持了相当的易读性。"
579
580
580
581
#: ../../whatsnew/2.2.rst:403
581
582
msgid ""
@@ -636,8 +637,8 @@ msgid ""
636
637
"``file[5]`` to randomly access the sixth element will work, though it "
637
638
"really should."
638
639
msgstr ""
639
- ":meth:`~object.__getitem__` 更适用于在对象上定义索引操作,以便你可以编写 ``obj[5]`` "
640
- "来检索第六个元素。 如果仅仅为了支持 :keyword:`for` 循环而使用它,会有些误导。考虑一个类文件对象,它希望被循环遍历;*index* "
640
+ ":meth:`~object.__getitem__` 更适用于在对象上定义索引操作,以便你可以编写 ``obj[5]`` 来检索第六个元素。 "
641
+ "如果仅仅为了支持 :keyword:`for` 循环而使用它,会有些误导。 考虑一个类文件对象,它希望被循环遍历;*index* "
641
642
"参数基本上是没有意义的,因为类可能假定会有一系列的 :meth:`~object.__getitem__` 调用,每次 *index* "
642
643
"增加一。换句话说,:meth:`~object.__getitem__` 方法的存在并不意味着使用 ``file[5]`` "
643
644
"随机访问第六个元素是可行的,尽管实际上它应该是可行的。"
@@ -652,10 +653,10 @@ msgid ""
652
653
"``iter(C, sentinel)`` returns an iterator that will invoke the callable "
653
654
"object *C* until it returns *sentinel* to signal that the iterator is done."
654
655
msgstr ""
655
- "在 Python 2.2 中,可以单独实现迭代,而 :meth:`~object.__getitem__` "
656
- "方法可以仅限于真正支持随机访问的类。 迭代器的基本概念很简单。一个新的内置函数 ``iter(obj)`` 或 ``iter(C, sentinel)``"
657
- " 被引入,用于获取迭代器。 ``iter(obj)`` 返回对象 *obj* 的迭代器,而 ``iter(C, sentinel)`` "
658
- "返回一个迭代器,该迭代器将调用可调用对象 *C*,直到它返回 *sentinel*,以此表示迭代结束。"
656
+ "在 Python 2.2 中,可以单独实现迭代,而 :meth:`~object.__getitem__` 方法可以仅限于真正支持随机访问的类。 "
657
+ "迭代器的基本概念很简单。 一个新的内置函数 ``iter(obj)`` 或 ``iter(C, sentinel)`` 被引入,用于获取迭代器。 "
658
+ "``iter(obj)`` 返回对象 *obj* 的迭代器,而 ``iter(C, sentinel)`` 返回一个迭代器,该迭代器将调用可调用对象 "
659
+ "*C*,直到它返回 *sentinel*,以此表示迭代结束。"
659
660
660
661
#: ../../whatsnew/2.2.rst:450
661
662
msgid ""
@@ -668,10 +669,9 @@ msgid ""
668
669
" :c:member:`~PyTypeObject.tp_iternext` function."
669
670
msgstr ""
670
671
"Python 类可以定义一个 :meth:`!__iter__` "
671
- "方法,该方法应该创建并返回一个对象的新迭代器;如果对象本身就是它自己的迭代器,这个方法可以简单地返回 "
672
- "``self``。特别地,迭代器通常会是它们自己的迭代器。用 C 实现的扩展类型可以实现一个 "
673
- ":c:member:`~PyTypeObject.tp_iter` 函数来返回一个迭代器,想要表现为迭代器的扩展类型可以定义一个 "
674
- ":c:member:`~PyTypeObject.tp_iternext` 函数。"
672
+ "方法,该方法应该创建并返回一个对象的新迭代器;如果对象本身就是它自己的迭代器,这个方法可以简单地返回 ``self``。 "
673
+ "特别地,迭代器通常会是它们自己的迭代器。 用 C 实现的扩展类型可以实现一个 :c:member:`~PyTypeObject.tp_iter` "
674
+ "函数来返回一个迭代器,想要表现为迭代器的扩展类型可以定义一个 :c:member:`~PyTypeObject.tp_iternext` 函数。"
675
675
676
676
#: ../../whatsnew/2.2.rst:457
677
677
msgid ""
@@ -694,10 +694,10 @@ msgid ""
694
694
"changed to use the iterator protocol. This means you can do things like "
695
695
"this::"
696
696
msgstr ""
697
- "在Python 2.2中 ,:keyword:`for` 语句不再期望一个序列;它期望的是一个可以返回迭代器的 :func:`iter` "
698
- "对象。为了向后兼容和方便 ,对于那些没有实现 :meth:`!__iter__` 或 :c:member:`~PyTypeObject.tp_iter` "
699
- "方法的序列,会自动构造一个迭代器,因此 ``for i in [1,2,3]`` "
700
- "仍然可以正常工作。Python解释器在循环遍历序列时 ,已经改为使用迭代器协议。这意味着你可以做类似这样的事情:"
697
+ "在 Python 2.2 中 ,:keyword:`for` 语句不再期望一个序列;它期望的是一个可以返回迭代器的 :func:`iter` 对象。 "
698
+ "为了向下兼容和方便 ,对于那些没有实现 :meth:`!__iter__` 或 :c:member:`~PyTypeObject.tp_iter` "
699
+ "方法的序列,会自动构造一个迭代器,因此 ``for i in [1,2,3]`` 仍然可以正常工作。 Python "
700
+ "解释器在循环遍历序列时 ,已经改为使用迭代器协议。 这意味着你可以做类似这样的事情:"
701
701
702
702
#: ../../whatsnew/2.2.rst:492
703
703
msgid ""
0 commit comments