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

Skip to content

Commit 461cd68

Browse files
[po] auto sync
1 parent 6922702 commit 461cd68

File tree

2 files changed

+86
-5
lines changed

2 files changed

+86
-5
lines changed

.stat.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"translation": "80.81%", "updated_at": "2025-01-12T01:20:04Z"}
1+
{"translation": "80.83%", "updated_at": "2025-01-12T07:55:42Z"}

howto/descriptor.po

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# SOME DESCRIPTIVE TITLE.
2-
# Copyright (C) 2001-2024, Python Software Foundation
2+
# Copyright (C) 2001-2025, Python Software Foundation
33
# This file is distributed under the same license as the Python package.
44
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
55
#
@@ -11,16 +11,16 @@
1111
# WH-2099 <wh2099@outlook.com>, 2021
1212
# lian Wu (Wulian) <xiguawulian@gmail.com>, 2024
1313
# Zhikang Yan <2951256653@qq.com>, 2024
14-
# Freesand Leo <yuqinju@163.com>, 2024
14+
# Freesand Leo <yuqinju@163.com>, 2025
1515
#
1616
#, fuzzy
1717
msgid ""
1818
msgstr ""
1919
"Project-Id-Version: Python 3.13\n"
2020
"Report-Msgid-Bugs-To: \n"
21-
"POT-Creation-Date: 2024-12-20 14:16+0000\n"
21+
"POT-Creation-Date: 2025-01-10 14:17+0000\n"
2222
"PO-Revision-Date: 2021-06-28 00:53+0000\n"
23-
"Last-Translator: Freesand Leo <yuqinju@163.com>, 2024\n"
23+
"Last-Translator: Freesand Leo <yuqinju@163.com>, 2025\n"
2424
"Language-Team: Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n"
2525
"MIME-Version: 1.0\n"
2626
"Content-Type: text/plain; charset=UTF-8\n"
@@ -263,6 +263,9 @@ msgid ""
263263
" parameter that lets the :meth:`~object.__get__` method learn the target "
264264
"directory. The *objtype* parameter is the class *Directory*."
265265
msgstr ""
266+
"除了说明描述器如何运行计算,这个例子也揭示了传给 :meth:`~object.__get__` 的形参的目的。 *self* 形参为 "
267+
"*size*,即一个 *DirectorySize* 的实例。 *obj* 形参为 *g* 或 *s*,即一个 *Directory* 的实例。 "
268+
"*obj* 形参让 :meth:`~object.__get__` 方法获知目标目录。 *objtype* 形参为 *Directory* 类。"
266269

267270
#: ../../howto/descriptor.rst:131
268271
msgid "Managed attributes"
@@ -276,6 +279,8 @@ msgid ""
276279
" The descriptor's :meth:`~object.__get__` and :meth:`~object.__set__` "
277280
"methods are triggered when the public attribute is accessed."
278281
msgstr ""
282+
"描述器的一种流行用法是管理对实例数据的访问。 描述器被分配给类字典中的公有属性,而实际数据则作为私有属性存储在实例字典中。 描述器的 "
283+
":meth:`~object.__get__` 和 :meth:`~object.__set__` 方法会在公有属性被访问时被触发。"
279284

280285
#: ../../howto/descriptor.rst:139
281286
msgid ""
@@ -369,6 +374,28 @@ msgid ""
369374
"INFO:root:Accessing 'age' giving 40\n"
370375
"40"
371376
msgstr ""
377+
">>> mary = Person('Mary M', 30) # 初始年龄更新会被记录\n"
378+
"INFO:root:Updating 'age' to 30\n"
379+
">>> dave = Person('David D', 40)\n"
380+
"INFO:root:Updating 'age' to 40\n"
381+
"\n"
382+
">>> vars(mary) # 私有属性中的实际数据\n"
383+
"{'name': 'Mary M', '_age': 30}\n"
384+
">>> vars(dave)\n"
385+
"{'name': 'David D', '_age': 40}\n"
386+
"\n"
387+
">>> mary.age # 访问数据并记录查找操作\n"
388+
"INFO:root:Accessing 'age' giving 30\n"
389+
"30\n"
390+
">>> mary.birthday() # 更新也会被记录\n"
391+
"INFO:root:Accessing 'age' giving 30\n"
392+
"INFO:root:Updating 'age' to 31\n"
393+
"\n"
394+
">>> dave.name # 常规属性查找不会被记录\n"
395+
"'David D'\n"
396+
">>> dave.age # 只有被管理的属性会被记录\n"
397+
"INFO:root:Accessing 'age' giving 40\n"
398+
"40"
372399

373400
#: ../../howto/descriptor.rst:206
374401
msgid ""
@@ -398,6 +425,9 @@ msgid ""
398425
" names can be recorded, giving each descriptor its own *public_name* and "
399426
"*private_name*:"
400427
msgstr ""
428+
"在此示例中,:class:`!Person` 类具有两个描述器实例 *name* 和 *age*。 当 :class:`!Person` "
429+
"类被定义时,它将在 *LoggedAccess* 中执行对 :meth:`~object.__set_name__` "
430+
"的回调以便记录字段名称,给予每个描述器自己的 *public_name* 和 *private_name*:"
401431

402432
#: ../../howto/descriptor.rst:223
403433
msgid ""
@@ -736,6 +766,57 @@ msgid ""
736766
" f'Expected {self.predicate} to be true for {value!r}'\n"
737767
" )"
738768
msgstr ""
769+
"class OneOf(Validator):\n"
770+
"\n"
771+
" def __init__(self, *options):\n"
772+
" self.options = set(options)\n"
773+
"\n"
774+
" def validate(self, value):\n"
775+
" if value not in self.options:\n"
776+
" raise ValueError(\n"
777+
" f'Expected {value!r} to be one of {self.options!r}'\n"
778+
" )\n"
779+
"\n"
780+
"class Number(Validator):\n"
781+
"\n"
782+
" def __init__(self, minvalue=None, maxvalue=None):\n"
783+
" self.minvalue = minvalue\n"
784+
" self.maxvalue = maxvalue\n"
785+
"\n"
786+
" def validate(self, value):\n"
787+
" if not isinstance(value, (int, float)):\n"
788+
" raise TypeError(f'Expected {value!r} to be an int or float')\n"
789+
" if self.minvalue is not None and value < self.minvalue:\n"
790+
" raise ValueError(\n"
791+
" f'Expected {value!r} to be at least {self.minvalue!r}'\n"
792+
" )\n"
793+
" if self.maxvalue is not None and value > self.maxvalue:\n"
794+
" raise ValueError(\n"
795+
" f'Expected {value!r} to be no more than {self.maxvalue!r}'\n"
796+
" )\n"
797+
"\n"
798+
"class String(Validator):\n"
799+
"\n"
800+
" def __init__(self, minsize=None, maxsize=None, predicate=None):\n"
801+
" self.minsize = minsize\n"
802+
" self.maxsize = maxsize\n"
803+
" self.predicate = predicate\n"
804+
"\n"
805+
" def validate(self, value):\n"
806+
" if not isinstance(value, str):\n"
807+
" raise TypeError(f'Expected {value!r} to be an str')\n"
808+
" if self.minsize is not None and len(value) < self.minsize:\n"
809+
" raise ValueError(\n"
810+
" f'Expected {value!r} to be no smaller than {self.minsize!r}'\n"
811+
" )\n"
812+
" if self.maxsize is not None and len(value) > self.maxsize:\n"
813+
" raise ValueError(\n"
814+
" f'Expected {value!r} to be no bigger than {self.maxsize!r}'\n"
815+
" )\n"
816+
" if self.predicate is not None and not self.predicate(value):\n"
817+
" raise ValueError(\n"
818+
" f'Expected {self.predicate} to be true for {value!r}'\n"
819+
" )"
739820

740821
#: ../../howto/descriptor.rst:439
741822
msgid "Practical application"

0 commit comments

Comments
 (0)
0