@@ -26,7 +26,7 @@ msgid ""
26
26
msgstr ""
27
27
"Project-Id-Version :Python 3.14\n "
28
28
"Report-Msgid-Bugs-To :\n "
29
- "POT-Creation-Date :2025-05-08 02:53-0300 \n "
29
+ "POT-Creation-Date :2025-05-16 14:19+0000 \n "
30
30
"PO-Revision-Date :2021-06-28 00:50+0000\n "
31
31
"Last-Translator :Freesand Leo <yuqinju@163.com>, 2025\n "
32
32
"Language-Team :Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n "
@@ -1308,6 +1308,101 @@ msgid ""
1308
1308
" uint16_t tp_versions_used;\n"
1309
1309
"} PyTypeObject;\n"
1310
1310
msgstr ""
1311
+ "typedef struct _typeobject {\n"
1312
+ " PyObject_VAR_HEAD\n"
1313
+ " const char *tp_name; /* 用于打印,格式为\" <module>.<name>\" */\n"
1314
+ " Py_ssize_t tp_basicsize, tp_itemsize; /* 用于分配 */\n"
1315
+ "\n"
1316
+ " /* 用于实现标准操作的方法 */\n"
1317
+ "\n"
1318
+ " destructor tp_dealloc;\n"
1319
+ " Py_ssize_t tp_vectorcall_offset;\n"
1320
+ " getattrfunc tp_getattr;\n"
1321
+ " setattrfunc tp_setattr;\n"
1322
+ " PyAsyncMethods *tp_as_async; /* 原名为 tp_compare (Python 2)\n"
1323
+ " 或 tp_reserved (Python 3) */\n"
1324
+ " reprfunc tp_repr;\n"
1325
+ "\n"
1326
+ " /* 用于标准类的方法集 */\n"
1327
+ "\n"
1328
+ " PyNumberMethods *tp_as_number;\n"
1329
+ " PySequenceMethods *tp_as_sequence;\n"
1330
+ " PyMappingMethods *tp_as_mapping;\n"
1331
+ "\n"
1332
+ " /* 更多标准操作 (这些用于二进制兼容) */\n"
1333
+ "\n"
1334
+ " hashfunc tp_hash;\n"
1335
+ " ternaryfunc tp_call;\n"
1336
+ " reprfunc tp_str;\n"
1337
+ " getattrofunc tp_getattro;\n"
1338
+ " setattrofunc tp_setattro;\n"
1339
+ "\n"
1340
+ " /* 用于以输入/输出缓冲区方式访问对象的函数 */\n"
1341
+ " PyBufferProcs *tp_as_buffer;\n"
1342
+ "\n"
1343
+ " /* 用于定义可选/扩展特性是否存在的旗标 */\n"
1344
+ " unsigned long tp_flags;\n"
1345
+ "\n"
1346
+ " const char *tp_doc; /* 文档字符串 */\n"
1347
+ "\n"
1348
+ " /* 在 2.0 发布版中分配的含义 */\n"
1349
+ " /* 为所有可访问的对象调用函数 */\n"
1350
+ " traverseproc tp_traverse;\n"
1351
+ "\n"
1352
+ " /* 删除对所包含对象的引用 */\n"
1353
+ " inquiry tp_clear;\n"
1354
+ "\n"
1355
+ " /* 在 2.1 发布版中分配的含义 */\n"
1356
+ " /* 富比较操作 */\n"
1357
+ " richcmpfunc tp_richcompare;\n"
1358
+ "\n"
1359
+ " /* 启用弱引用 */\n"
1360
+ " Py_ssize_t tp_weaklistoffset;\n"
1361
+ "\n"
1362
+ " /* 迭代器 */\n"
1363
+ " getiterfunc tp_iter;\n"
1364
+ " iternextfunc tp_iternext;\n"
1365
+ "\n"
1366
+ " /* 属性描述器和子类化内容 */\n"
1367
+ " PyMethodDef *tp_methods;\n"
1368
+ " PyMemberDef *tp_members;\n"
1369
+ " PyGetSetDef *tp_getset;\n"
1370
+ " // 堆类型的强引用,静态类型的借入引用\n"
1371
+ " PyTypeObject *tp_base;\n"
1372
+ " PyObject *tp_dict;\n"
1373
+ " descrgetfunc tp_descr_get;\n"
1374
+ " descrsetfunc tp_descr_set;\n"
1375
+ " Py_ssize_t tp_dictoffset;\n"
1376
+ " initproc tp_init;\n"
1377
+ " allocfunc tp_alloc;\n"
1378
+ " newfunc tp_new;\n"
1379
+ " freefunc tp_free; /* 层级的释放内存例程 */\n"
1380
+ " inquiry tp_is_gc; /* 用于 PyObject_IS_GC */\n"
1381
+ " PyObject *tp_bases;\n"
1382
+ " PyObject *tp_mro; /* 方法解析顺序 */\n"
1383
+ " PyObject *tp_cache; /* 不再被使用 */\n"
1384
+ " void *tp_subclasses; /* 对于静态内置类型这将是一个索引 */\n"
1385
+ " PyObject *tp_weaklist; /* 不被用于静态内置类型 */\n"
1386
+ " destructor tp_del;\n"
1387
+ "\n"
1388
+ " /* 类型属性缓存版本标签。 在 2.6 版中添加。\n"
1389
+ " * 如果为零,则缓存无效并且必须被初始化。\n"
1390
+ " */\n"
1391
+ " unsigned int tp_version_tag;\n"
1392
+ "\n"
1393
+ " destructor tp_finalize;\n"
1394
+ " vectorcallfunc tp_vectorcall;\n"
1395
+ "\n"
1396
+ " /* 类型监视器针对此类型的位设置 */\n"
1397
+ " unsigned char tp_watched;\n"
1398
+ "\n"
1399
+ " /* 使用的 tp_version_tag 值数量。\n"
1400
+ " * 如果针对此类型的属性缓存被禁用则设为 _Py_ATTR_CACHE_UNUSED\n"
1401
+ " * (例如由于自定义的 MRO 条目而被禁用)。\n"
1402
+ " * 在其他情况下,将被限制为 MAX_VERSIONS_PER_CLASS (在其他地方定义)。\n"
1403
+ " */\n"
1404
+ " uint16_t tp_versions_used;\n"
1405
+ "} PyTypeObject;\n"
1311
1406
1312
1407
#: ../../c-api/typeobj.rst:485
1313
1408
msgid "PyObject Slots"
@@ -1707,6 +1802,15 @@ msgid ""
1707
1802
":c:func:`PyObject_GC_Del` if the instance was allocated using "
1708
1803
":c:macro:`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar`."
1709
1804
msgstr ""
1805
+ "当新引用计数为零时 :c:func:`Py_DECREF` 和 :c:func:`Py_XDECREF` 宏会调用析构函数。 "
1806
+ "此时,实例仍然存在,但已没有了对它的引用。 "
1807
+ "析构函数应当释放该实例拥有的所有引用,释放实例拥有的内在缓冲区(使用与分配缓冲区时所用分配函数相对应的释放函数),并调用类型的 "
1808
+ ":c:member:`~PyTypeObject.tp_free` 函数。 如果该类型不可被子类型化(即未设置 "
1809
+ ":c:macro:`Py_TPFLAGS_BASETYPE` 旗标位),则允许直接调用对象的释放器而不必通过 "
1810
+ ":c:member:`~PyTypeObject.tp_free`。 对象的释放器应当为分配实例时所使用的释放器;如果实例是使用 "
1811
+ ":c:macro:`PyObject_New` 或 :c:macro:`PyObject_NewVar` 分配的则释放器通常为 "
1812
+ ":c:func:`PyObject_Free`,或者如果实例是使用 :c:macro:`PyObject_GC_New` 或 "
1813
+ ":c:macro:`PyObject_GC_NewVar` 分配的则释放器为 :c:func:`PyObject_GC_Del`。"
1710
1814
1711
1815
#: ../../c-api/typeobj.rst:700
1712
1816
msgid ""
@@ -1728,6 +1832,14 @@ msgid ""
1728
1832
" Py_TYPE(self)->tp_free(self);\n"
1729
1833
"}"
1730
1834
msgstr ""
1835
+ "static void\n"
1836
+ "foo_dealloc(PyObject *op)\n"
1837
+ "{\n"
1838
+ " foo_object *self = (foo_object *) op;\n"
1839
+ " PyObject_GC_UnTrack(self);\n"
1840
+ " Py_CLEAR(self->ref);\n"
1841
+ " Py_TYPE(self)->tp_free(self);\n"
1842
+ "}"
1731
1843
1732
1844
#: ../../c-api/typeobj.rst:715
1733
1845
msgid ""
@@ -1750,6 +1862,14 @@ msgid ""
1750
1862
" Py_DECREF(tp);\n"
1751
1863
"}"
1752
1864
msgstr ""
1865
+ "static void\n"
1866
+ "foo_dealloc(PyObject *op)\n"
1867
+ "{\n"
1868
+ " PyTypeObject *tp = Py_TYPE(op);\n"
1869
+ " // free references and buffers here\n"
1870
+ " tp->tp_free(op);\n"
1871
+ " Py_DECREF(tp);\n"
1872
+ "}"
1753
1873
1754
1874
#: ../../c-api/typeobj.rst:734
1755
1875
msgid ""
@@ -2697,6 +2817,15 @@ msgid ""
2697
2817
" return 0;\n"
2698
2818
"}"
2699
2819
msgstr ""
2820
+ "static int\n"
2821
+ "local_traverse(PyObject *op, visitproc visit, void *arg)\n"
2822
+ "{\n"
2823
+ " localobject *self = (localobject *) op;\n"
2824
+ " Py_VISIT(self->args);\n"
2825
+ " Py_VISIT(self->kw);\n"
2826
+ " Py_VISIT(self->dict);\n"
2827
+ " return 0;\n"
2828
+ "}"
2700
2829
2701
2830
#: ../../c-api/typeobj.rst:1433
2702
2831
msgid ""
@@ -2876,6 +3005,16 @@ msgid ""
2876
3005
" return 0;\n"
2877
3006
"}"
2878
3007
msgstr ""
3008
+ "static int\n"
3009
+ "local_clear(PyObject *op)\n"
3010
+ "{\n"
3011
+ " localobject *self = (localobject *) op;\n"
3012
+ " Py_CLEAR(self->key);\n"
3013
+ " Py_CLEAR(self->args);\n"
3014
+ " Py_CLEAR(self->kw);\n"
3015
+ " Py_CLEAR(self->dict);\n"
3016
+ " return 0;\n"
3017
+ "}"
2879
3018
2880
3019
#: ../../c-api/typeobj.rst:1530
2881
3020
msgid ""
@@ -3623,7 +3762,7 @@ msgstr ""
3623
3762
msgid ""
3624
3763
"For static subtypes, :c:data:`PyBaseObject_Type` uses "
3625
3764
":c:func:`PyObject_Free`."
3626
- msgstr ""
3765
+ msgstr "对于静态子类型,:c:data:`PyBaseObject_Type` 将使用 :c:func:`PyObject_Free`。 "
3627
3766
3628
3767
#: ../../c-api/typeobj.rst:2025
3629
3768
msgid "An optional pointer to a function called by the garbage collector."