8000 [po] auto sync · python/python-docs-zh-cn@5e6ace6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5e6ace6

Browse files
[po] auto sync
1 parent 4707b3b commit 5e6ace6

File tree

2 files changed

+85
-5
lines changed

2 files changed

+85
-5
lines changed

.stat.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"translation": "80.35%", "updated_at": "2024-12-25T06:55:48Z"}
1+
{"translation": "80.38%", "updated_at": "2024-12-25T14:56:01Z"}

howto/descriptor.po

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ msgid ""
1818
msgstr ""
1919
"Project-Id-Version: Python 3.13\n"
2020
"Report-Msgid-Bugs-To: \n"
21-
"POT-Creation-Date: 2024-11-29 14:18+0000\n"
21+
"POT-Creation-Date: 2024-12-20 14:16+0000\n"
2222
"PO-Revision-Date: 2021-06-28 00:53+0000\n"
2323
"Last-Translator: Freesand Leo <yuqinju@163.com>, 2024\n"
24< 10000 code>24
"Language-Team: Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n"
@@ -1025,6 +1025,14 @@ msgid ""
10251025
" raise\n"
10261026
" return type(obj).__getattr__(obj, name) # __getattr__"
10271027
msgstr ""
1028+
"def getattr_hook(obj, name):\n"
1029+
" \"Emulate slot_tp_getattr_hook() in Objects/typeobject.c\"\n"
1030+
" try:\n"
1031+
" return obj.__getattribute__(name)\n"
1032+
" except AttributeError:\n"
1033+
" if not hasattr(type(obj), '__getattr__'):\n"
1034+
" raise\n"
1035+
" return type(obj).__getattr__(obj, name) # __getattr__"
10281036

10291037
#: ../../howto/descriptor.rst:776
10301038
msgid "Invocation from a class"
@@ -1037,6 +1045,9 @@ msgid ""
10371045
":meth:`!object.__getattribute__` but the instance dictionary lookup is "
10381046
"replaced by a search through the class's :term:`method resolution order`."
10391047
msgstr ""
1048+
"像 ``A.x`` 这样的点操作符查找的逻辑在 :meth:`!type.__getattribute__` 中。 其步骤与 "
1049+
":meth:`!object.__getattribute__` 相似,但是实例字典查找被替换为搜索类的 :term:`method "
1050+
"resolution order`。"
10401051

10411052
#: ../../howto/descriptor.rst:783
10421053
msgid ""
@@ -1061,6 +1072,7 @@ msgid ""
10611072
":meth:`~object.__getattribute__` method for object returned by "
10621073
":func:`super`."
10631074
msgstr ""
1075+
"super 的点操作符查找的逻辑在 :func:`super` 所返回对象的 :meth:`~object.__getattribute__` 方法中。"
10641076

10651077
#: ../../howto/descriptor.rst:795
10661078
msgid ""
@@ -1094,6 +1106,8 @@ msgid ""
10941106
":meth:`~object.__getattribute__` methods for :class:`object`, :class:`type`,"
10951107
" and :func:`super`."
10961108
msgstr ""
1109+
"描述器的机制嵌入在 :class:`object`, :class:`type` 和 :func:`super` 的 "
1110+
":meth:`~object.__getattribute__` 方法中。"
10971111

10981112
#: ../../howto/descriptor.rst:812
10991113
msgid "The important points to remember are:"
@@ -1102,7 +1116,7 @@ msgstr "要记住的重要点是:"
11021116
#: ../../howto/descriptor.rst:814
11031117
msgid ""
11041118
"Descriptors are invoked by the :meth:`~object.__getattribute__` method."
1105-
msgstr ""
1119+
msgstr "描述器将由 :meth:`~object.__getattribute__` 方法发起调用。"
11061120

11071121
#: ../../howto/descriptor.rst:816
11081122
msgid ""
@@ -1114,7 +1128,7 @@ msgstr "类从 :class:`object`,:class:`type` 或 :func:`super` 继承此机制
11141128
msgid ""
11151129
"Overriding :meth:`~object.__getattribute__` prevents automatic descriptor "
11161130
"calls because all the descriptor logic is in that method."
1117-
msgstr ""
1131+
msgstr "重写 :meth:`~object.__getattribute__` 将阻止自动的描述器调用因为所有描述器逻辑都在该方法中。"
11181132

11191133
#: ../../howto/descriptor.rst:822
11201134
msgid ""
@@ -1123,6 +1137,8 @@ msgid ""
11231137
" and may include the class. The second puts in ``None`` for the instance "
11241138
"and always includes the class."
11251139
msgstr ""
1140+
":meth:`!object.__getattribute__` 和 :meth:`!type.__getattribute__` 会用不同方式调用 "
1141+
":meth:`~object.__get__`。 第一个会包括实例并可能包括类 。第二个会将 ``None`` 作为实例并且总是包括类。"
11261142

11271143
#: ../../howto/descriptor.rst:827
11281144
msgid "Data descriptors always override instance dictionaries."
@@ -1399,6 +1415,45 @@ msgid ""
13991415
" def deleter(self, fdel):\n"
14001416
" return type(self)(self.fget, self.fset, fdel, self.__doc__)"
14011417
msgstr ""
1418+
"class Property:\n"
1419+
" \"Emulate PyProperty_Type() in Objects/descrobject.c\"\n"
1420+
"\n"
1421+
" def __init__(self, fget=None, fset=None, fdel=None, doc=None):\n"
1422+
" self.fget = fget\n"
1423+
" self.fset = fset\n"
1424+
" self.fdel = fdel\n"
1425+
" if doc is None and fget is not None:\n"
1426+
" doc = fget.__doc__\n"
1427+
" self.__doc__ = doc\n"
1428+
"\n"
1429+
" def __set_name__(self, owner, name):\n"
1430+
" self.__name__ = name\n"
1431+
"\n"
1432+
" def __get__(self, obj, objtype=None):\n"
1433+
" if obj is None:\n"
1434+
" return self\n"
1435+
" if self.fget is None:\n"
1436+
" raise AttributeError\n"
1437+
" return self.fget(obj)\n"
1438+
"\n"
1439+
" def __set__(self, obj, value):\n"
1440+
" if self.fset is None:\n"
1441+
" raise AttributeError\n"
1442+
" self.fset(obj, value)\n"
1443+
"\n"
1444+
" def __delete__(self, obj):\n"
1445+
" if self.fdel is None:\n"
1446+
" raise AttributeError\n"
1447+
" self.fdel(obj)\n"
1448+
"\n"
1449+
" def getter(self, fget):\n"
1450+
" return type(self)(fget, self.fset, self.fdel, self.__doc__)\n"
1451+
"\n"
1452+
" def setter(self, fset):\n"
1453+
" return type(self)(self.fget, fset, self.fdel, self.__doc__)\n"
1454+
"\n"
1455+
" def deleter(self, fdel):\n"
1456+
" return type(self)(self.fget, self.fset, fdel, self.__doc__)"
14021457

14031458
#: ../../howto/descriptor.rst:1122
14041459
msgid ""
@@ -1444,7 +1499,7 @@ msgstr ""
14441499
msgid ""
14451500
"Either the built-in :func:`property` or our :func:`!Property` equivalent "
14461501
"would work in this example."
1447-
msgstr ""
1502+
msgstr "在这个例子中内置的 :func:`property` 或我们的 :func:`!Property` 等价实现都是可以的。"
14481503

14491504
#: ../../howto/descriptor.rst:1148
14501505
msgid "Functions and methods"
@@ -1500,6 +1555,31 @@ msgid ""
15001555
" \"Emulate method_descr_get() in Objects/classobject.c\"\n"
15011556
" return self"
15021557
msgstr ""
1558+
"class MethodType:\n"
1559+
" \"Emulate PyMethod_Type in Objects/classobject.c\"\n"
1560+
"\n"
1561+
" def __init__(self, func, obj):\n"
1562+
" self.__func__ = func\n"
1563+
" self.__self__ = obj\n"
1564+
"\n"
1565+
" def __call__(self, *args, **kwargs):\n"
1566+
" func = self.__func__\n"
1567+
" obj = self.__self__\n"
1568+
" return func(obj, *args, **kwargs)\n"
1569+
"\n"
1570+
" def __getattribute__(self, name):\n"
1571+
" \"Emulate method_getset() in Objects/classobject.c\"\n"
1572+
" if name == '__doc__':\n"
1573+
" return self.__func__.__doc__\n"
1574+
" return object.__getattribute__(self, name)\n"
1575+
"\n"
1576+
" def __getattr__(self, name):\n"
1577+
" \"Emulate method_getattro() in Objects/classobject.c\"\n"
1578+
" return getattr(self.__func__, name)\n"
1579+
"\n"
1580+
" def __get__(self, obj, objtype=None):\n"
1581+
" \"Emulate method_descr_get() in Objects/classobject.c\"\n"
1582+
" return self"
15031583

15041584
#: ../../howto/descriptor.rst:1189
15051585
msgid ""

0 commit comments

Comments
 (0)
0