@@ -1664,6 +1664,8 @@ msgid ""
1664
1664
":c:member:`~PyTypeObject.tp_base`, plus any extra data needed by each "
1665
1665
"instance."
1666
1666
msgstr ""
1667
+ ":c:member:`!tp_basicsize` 包括类型的 :c:member:`~PyTypeObject.tp_base` "
1668
+ "所需数据大小,加上每个实例所需额外数据的大小。"
1667
1669
1668
1670
#: ../../c-api/typeobj.rst:633
1669
1671
msgid ""
@@ -1673,6 +1675,9 @@ msgid ""
1673
1675
":c:member:`!tp_basicsize` must be greater than or equal to the base's "
1674
1676
":c:member:`!tp_basicsize`."
1675
1677
msgstr ""
1678
+ "设置 :c:member:`!tp_basicsize` 的正确方式是在被用于声明实例布局的结构体上使用 ``sizeof`` 运算符。 "
1679
+ "这个结构体必须包括被用于声明基类型的结构体。 换句话说,:c:member:`!tp_basicsize` 必须大于等于基类型的 "
1680
+ ":c:member:`!tp_basicsize`。"
1676
1681
1677
1682
#: ../../c-api/typeobj.rst:639
1678
1683
msgid ""
@@ -1682,22 +1687,27 @@ msgid ""
1682
1687
"defined by the macro :c:macro:`PyObject_HEAD` or "
1683
1688
":c:macro:`PyObject_VAR_HEAD`, respectively."
1684
1689
msgstr ""
1690
+ "由于任何类型都是 :py:type:`object` 的子类型,这个结构体必须包括 :c:type:`PyObject` 或 "
1691
+ ":c:type:`PyVarObject` (具体取决于 :c:member:`~PyVarObject.ob_size` 是否应当被包括)。 "
1692
+ "它们通常是分别由 :c:macro:`PyObject_HEAD` 或 :c:macro:`PyObject_VAR_HEAD` 宏来定义的。"
1685
1693
1686
1694
#: ../../c-api/typeobj.rst:645
1687
1695
msgid ""
1688
1696
"The basic size does not include the GC header size, as that header is not "
1689
1697
"part of :c:macro:`PyObject_HEAD`."
1690
- msgstr ""
1698
+ msgstr "基础大小不包括 GC 标头大小,因为该标头不是 :c:macro:`PyObject_HEAD` 的一部分。 "
1691
1699
1692
1700
#: ../../c-api/typeobj.rst:648
1693
1701
msgid ""
1694
1702
"For cases where struct used to declare the base type is unknown, see "
1695
1703
":c:member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`."
1696
1704
msgstr ""
1705
+ "对于用于声明基类型的结构体位置未知的情况,请参见 :c:member:`PyType_Spec.basicsize` 和 "
1706
+ ":c:func:`PyType_FromMetaclass`。"
1697
1707
1698
1708
#: ../../c-api/typeobj.rst:651
1699
1709
msgid "Notes about alignment:"
1700
- msgstr ""
1710
+ msgstr "有关对齐的说明: "
1701
1711
1702
1712
#: ../../c-api/typeobj.rst:653
1703
1713
msgid ""
@@ -1707,6 +1717,9 @@ msgid ""
1707
1717
"when using compiler extensions like ``__attribute__((packed))``, it is up to"
1708
1718
" you."
1709
1719
msgstr ""
1720
+ ":c:member:`!tp_basicsize` 必须是 ``_Alignof(PyObject)`` 的位数。 当如建议的那样在包括了 "
1721
+ ":c:macro:`PyObject_HEAD` 的 ``struct`` 上使用 ``sizeof`` 时,编译器会确保这一点。 当没有使用 C "
1722
+ "``struct``,或者当使用像 ``__attribute__((packed))`` 这样的编译器扩展时,这将是你的责任。"
1710
1723
1711
1724
#: ../../c-api/typeobj.rst:658
1712
1725
msgid ""
@@ -1716,13 +1729,18 @@ msgid ""
1716
1729
"``double``, it is your responsibility that both fields are a multiple of "
1717
1730
"``_Alignof(double)``."
1718
1731
msgstr ""
1732
+ "如果可变条目需要特定的对齐,则 :c:member:`!tp_basicsize` 和 :c:member:`!tp_itemsize` "
1733
+ "必须均为该对齐值的倍数。 举例来说,如果一个类型的可变部分存储了一个 ``double``,你就要负责让这两个字段都是 "
1734
+ "``_Alignof(double)`` 的倍数。"
1719
1735
1720
1736
#: ../../c-api/typeobj.rst:667
1721
1737
msgid ""
1722
1738
"These fields are inherited separately by subtypes. (That is, if the field is"
1723
1739
" set to zero, :c:func:`PyType_Ready` will copy the value from the base type,"
1724
1740
" indicating that the instances do not need additional storage.)"
1725
1741
msgstr ""
1742
+ "这些字段是由子类型分别来继承的。 (也就是说,如果字段被设为零,则 :c:func:`PyType_Ready` "
1743
+ "将拷贝来自基类型的值,这表示实例不需要额外的存储。)"
1726
1744
1727
1745
#: ../../c-api/typeobj.rst:672
1728
1746
msgid ""
@@ -1731,6 +1749,8 @@ msgid ""
1731
1749
"different non-zero value in a subtype (though this depends on the "
1732
1750
"implementation of the base type)."
1733
1751
msgstr ""
1752
+ "如果基类型有一个非零的 :c:member:`~PyTypeObject.tp_itemsize`,那么在子类型中将 "
1753
+ ":c:member:`~PyTypeObject.tp_itemsize` 设置为不同的非零值通常是不安全的(不过这取决于该基类型的具体实现)。"
1734
1754
1735
1755
#: ../../c-api/typeobj.rst:679
1736
1756
msgid ""
0 commit comments