abstract.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
  6. <meta property="og:title" content="Abstract Objects Layer" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/c-api/abstract.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="The functions in this chapter interact with Python objects regardless of their type, or with wide classes of object types (e.g. all numerical types, or all sequence types). When used on object type..." />
  11. <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
  12. <meta property="og:image:alt" content="Python documentation" />
  13. <meta name="description" content="The functions in this chapter interact with Python objects regardless of their type, or with wide classes of object types (e.g. all numerical types, or all sequence types). When used on object type..." />
  14. <meta property="og:image:width" content="200" />
  15. <meta property="og:image:height" content="200" />
  16. <meta name="theme-color" content="#3776ab" />
  17. <title>Abstract Objects Layer &#8212; Python 3.12.0 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?digest=b37c26da2f7529d09fe70b41c4b2133fe4931a90" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css" />
  21. <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
  22. <script src="../_static/jquery.js"></script>
  23. <script src="../_static/underscore.js"></script>
  24. <script src="../_static/doctools.js"></script>
  25. <script src="../_static/sidebar.js"></script>
  26. <link rel="search" type="application/opensearchdescription+xml"
  27. title="Search within Python 3.12.0 documentation"
  28. href="../_static/opensearch.xml"/>
  29. <link rel="author" title="About these documents" href="../about.html" />
  30. <link rel="index" title="Index" href="../genindex.html" />
  31. <link rel="search" title="Search" href="../search.html" />
  32. <link rel="copyright" title="Copyright" href="../copyright.html" />
  33. <link rel="next" title="Object Protocol" href="object.html" />
  34. <link rel="prev" title="Support for Perf Maps" href="perfmaps.html" />
  35. <link rel="canonical" href="https://docs.python.org/3/c-api/abstract.html" />
  36. <style>
  37. @media only screen {
  38. table.full-width-table {
  39. width: 100%;
  40. }
  41. }
  42. </style>
  43. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  44. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  45. <script type="text/javascript" src="../_static/copybutton.js"></script>
  46. <script type="text/javascript" src="../_static/menu.js"></script>
  47. <script type="text/javascript" src="../_static/themetoggle.js"></script>
  48. </head>
  49. <body>
  50. <div class="mobile-nav">
  51. <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
  52. aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
  53. <nav class="nav-content" role="navigation">
  54. <label for="menuToggler" class="toggler__label">
  55. <span></span>
  56. </label>
  57. <span class="nav-items-wrapper">
  58. <a href="https://www.python.org/" class="nav-logo">
  59. <img src="../_static/py.svg" alt="Logo"/>
  60. </a>
  61. <span class="version_switcher_placeholder"></span>
  62. <form role="search" class="search" action="../search.html" method="get">
  63. <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
  64. <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
  65. </svg>
  66. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  67. <input type="submit" value="Go"/>
  68. </form>
  69. </span>
  70. </nav>
  71. <div class="menu-wrapper">
  72. <nav class="menu" role="navigation" aria-label="main navigation">
  73. <div class="language_switcher_placeholder"></div>
  74. <label class="theme-selector-label">
  75. Theme
  76. <select class="theme-selector" oninput="activateTheme(this.value)">
  77. <option value="auto" selected>Auto</option>
  78. <option value="light">Light</option>
  79. <option value="dark">Dark</option>
  80. </select>
  81. </label>
  82. <div>
  83. <h4>Previous topic</h4>
  84. <p class="topless"><a href="perfmaps.html"
  85. title="previous chapter">Support for Perf Maps</a></p>
  86. </div>
  87. <div>
  88. <h4>Next topic</h4>
  89. <p class="topless"><a href="object.html"
  90. title="next chapter">Object Protocol</a></p>
  91. </div>
  92. <div role="note" aria-label="source link">
  93. <h3>This Page</h3>
  94. <ul class="this-page-menu">
  95. <li><a href="../bugs.html">Report a Bug</a></li>
  96. <li>
  97. <a href="https://github.com/python/cpython/blob/main/Doc/c-api/abstract.rst"
  98. rel="nofollow">Show Source
  99. </a>
  100. </li>
  101. </ul>
  102. </div>
  103. </nav>
  104. </div>
  105. </div>
  106. <div class="related" role="navigation" aria-label="related navigation">
  107. <h3>Navigation</h3>
  108. <ul>
  109. <li class="right" style="margin-right: 10px">
  110. <a href="../genindex.html" title="General Index"
  111. accesskey="I">index</a></li>
  112. <li class="right" >
  113. <a href="../py-modindex.html" title="Python Module Index"
  114. >modules</a> |</li>
  115. <li class="right" >
  116. <a href="object.html" title="Object Protocol"
  117. accesskey="N">next</a> |</li>
  118. <li class="right" >
  119. <a href="perfmaps.html" title="Support for Perf Maps"
  120. accesskey="P">previous</a> |</li>
  121. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  122. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  123. <li class="switchers">
  124. <div class="language_switcher_placeholder"></div>
  125. <div class="version_switcher_placeholder"></div>
  126. </li>
  127. <li>
  128. </li>
  129. <li id="cpython-language-and-version">
  130. <a href="../index.html">3.12.0 Documentation</a> &#187;
  131. </li>
  132. <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Python/C API Reference Manual</a> &#187;</li>
  133. <li class="nav-item nav-item-this"><a href="">Abstract Objects Layer</a></li>
  134. <li class="right">
  135. <div class="inline-search" role="search">
  136. <form class="inline-search" action="../search.html" method="get">
  137. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  138. <input type="submit" value="Go" />
  139. </form>
  140. </div>
  141. |
  142. </li>
  143. <li class="right">
  144. <label class="theme-selector-label">
  145. Theme
  146. <select class="theme-selector" oninput="activateTheme(this.value)">
  147. <option value="auto" selected>Auto</option>
  148. <option value="light">Light</option>
  149. <option value="dark">Dark</option>
  150. </select>
  151. </label> |</li>
  152. </ul>
  153. </div>
  154. <div class="document">
  155. <div class="documentwrapper">
  156. <div class="bodywrapper">
  157. <div class="body" role="main">
  158. <section id="abstract-objects-layer">
  159. <span id="abstract"></span><h1>Abstract Objects Layer<a class="headerlink" href="#abstract-objects-layer" title="Permalink to this headline">¶</a></h1>
  160. <p>The functions in this chapter interact with Python objects regardless of their
  161. type, or with wide classes of object types (e.g. all numerical types, or all
  162. sequence types). When used on object types for which they do not apply, they
  163. will raise a Python exception.</p>
  164. <p>It is not possible to use these functions on objects that are not properly
  165. initialized, such as a list object that has been created by <a class="reference internal" href="list.html#c.PyList_New" title="PyList_New"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyList_New()</span></code></a>,
  166. but whose items have not been set to some non-<code class="docutils literal notranslate"><span class="pre">NULL</span></code> value yet.</p>
  167. <div class="toctree-wrapper compound">
  168. <ul>
  169. <li class="toctree-l1"><a class="reference internal" href="object.html">Object Protocol</a></li>
  170. <li class="toctree-l1"><a class="reference internal" href="call.html">Call Protocol</a><ul>
  171. <li class="toctree-l2"><a class="reference internal" href="call.html#the-tp-call-protocol">The <em>tp_call</em> Protocol</a></li>
  172. <li class="toctree-l2"><a class="reference internal" href="call.html#the-vectorcall-protocol">The Vectorcall Protocol</a><ul>
  173. <li class="toctree-l3"><a class="reference internal" href="call.html#recursion-control">Recursion Control</a></li>
  174. <li class="toctree-l3"><a class="reference internal" href="call.html#vectorcall-support-api">Vectorcall Support API</a></li>
  175. </ul>
  176. </li>
  177. <li class="toctree-l2"><a class="reference internal" href="call.html#object-calling-api">Object Calling API</a></li>
  178. <li class="toctree-l2"><a class="reference internal" href="call.html#call-support-api">Call Support API</a></li>
  179. </ul>
  180. </li>
  181. <li class="toctree-l1"><a class="reference internal" href="number.html">Number Protocol</a></li>
  182. <li class="toctree-l1"><a class="reference internal" href="sequence.html">Sequence Protocol</a></li>
  183. <li class="toctree-l1"><a class="reference internal" href="mapping.html">Mapping Protocol</a></li>
  184. <li class="toctree-l1"><a class="reference internal" href="iter.html">Iterator Protocol</a></li>
  185. <li class="toctree-l1"><a class="reference internal" href="buffer.html">Buffer Protocol</a><ul>
  186. <li class="toctree-l2"><a class="reference internal" href="buffer.html#buffer-structure">Buffer structure</a></li>
  187. <li class="toctree-l2"><a class="reference internal" href="buffer.html#buffer-request-types">Buffer request types</a><ul>
  188. <li class="toctree-l3"><a class="reference internal" href="buffer.html#request-independent-fields">request-independent fields</a></li>
  189. <li class="toctree-l3"><a class="reference internal" href="buffer.html#readonly-format">readonly, format</a></li>
  190. <li class="toctree-l3"><a class="reference internal" href="buffer.html#shape-strides-suboffsets">shape, strides, suboffsets</a></li>
  191. <li class="toctree-l3"><a class="reference internal" href="buffer.html#contiguity-requests">contiguity requests</a></li>
  192. <li class="toctree-l3"><a class="reference internal" href="buffer.html#compound-requests">compound requests</a></li>
  193. </ul>
  194. </li>
  195. <li class="toctree-l2"><a class="reference internal" href="buffer.html#complex-arrays">Complex arrays</a><ul>
  196. <li class="toctree-l3"><a class="reference internal" href="buffer.html#numpy-style-shape-and-strides">NumPy-style: shape and strides</a></li>
  197. <li class="toctree-l3"><a class="reference internal" href="buffer.html#pil-style-shape-strides-and-suboffsets">PIL-style: shape, strides and suboffsets</a></li>
  198. </ul>
  199. </li>
  200. <li class="toctree-l2"><a class="reference internal" href="buffer.html#buffer-related-functions">Buffer-related functions</a></li>
  201. </ul>
  202. </li>
  203. <li class="toctree-l1"><a class="reference internal" href="objbuffer.html">Old Buffer Protocol</a></li>
  204. </ul>
  205. </div>
  206. </section>
  207. <div class="clearer"></div>
  208. </div>
  209. </div>
  210. </div>
  211. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  212. <div class="sphinxsidebarwrapper">
  213. <div>
  214. <h4>Previous topic</h4>
  215. <p class="topless"><a href="perfmaps.html"
  216. title="previous chapter">Support for Perf Maps</a></p>
  217. </div>
  218. <div>
  219. <h4>Next topic</h4>
  220. <p class="topless"><a href="object.html"
  221. title="next chapter">Object Protocol</a></p>
  222. </div>
  223. <div role="note" aria-label="source link">
  224. <h3>This Page</h3>
  225. <ul class="this-page-menu">
  226. <li><a href="../bugs.html">Report a Bug</a></li>
  227. <li>
  228. <a href="https://github.com/python/cpython/blob/main/Doc/c-api/abstract.rst"
  229. rel="nofollow">Show Source
  230. </a>
  231. </li>
  232. </ul>
  233. </div>
  234. </div>
  235. </div>
  236. <div class="clearer"></div>
  237. </div>
  238. <div class="related" role="navigation" aria-label="related navigation">
  239. <h3>Navigation</h3>
  240. <ul>
  241. <li class="right" style="margin-right: 10px">
  242. <a href="../genindex.html" title="General Index"
  243. >index</a></li>
  244. <li class="right" >
  245. <a href="../py-modindex.html" title="Python Module Index"
  246. >modules</a> |</li>
  247. <li class="right" >
  248. <a href="object.html" title="Object Protocol"
  249. >next</a> |</li>
  250. <li class="right" >
  251. <a href="perfmaps.html" title="Support for Perf Maps"
  252. >previous</a> |</li>
  253. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  254. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  255. <li class="switchers">
  256. <div class="language_switcher_placeholder"></div>
  257. <div class="version_switcher_placeholder"></div>
  258. </li>
  259. <li>
  260. </li>
  261. <li id="cpython-language-and-version">
  262. <a href="../index.html">3.12.0 Documentation</a> &#187;
  263. </li>
  264. <li class="nav-item nav-item-1"><a href="index.html" >Python/C API Reference Manual</a> &#187;</li>
  265. <li class="nav-item nav-item-this"><a href="">Abstract Objects Layer</a></li>
  266. <li class="right">
  267. <div class="inline-search" role="search">
  268. <form class="inline-search" action="../search.html" method="get">
  269. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  270. <input type="submit" value="Go" />
  271. </form>
  272. </div>
  273. |
  274. </li>
  275. <li class="right">
  276. <label class="theme-selector-label">
  277. Theme
  278. <select class="theme-selector" oninput="activateTheme(this.value)">
  279. <option value="auto" selected>Auto</option>
  280. <option value="light">Light</option>
  281. <option value="dark">Dark</option>
  282. </select>
  283. </label> |</li>
  284. </ul>
  285. </div>
  286. <div class="footer">
  287. &copy; <a href="../copyright.html">Copyright</a> 2001-2023, Python Software Foundation.
  288. <br />
  289. This page is licensed under the Python Software Foundation License Version 2.
  290. <br />
  291. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  292. <br />
  293. See <a href="/license.html">History and License</a> for more information.<br />
  294. <br />
  295. The Python Software Foundation is a non-profit corporation.
  296. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  297. <br />
  298. <br />
  299. Last updated on Oct 02, 2023.
  300. <a href="/bugs.html">Found a bug</a>?
  301. <br />
  302. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.5.0.
  303. </div>
  304. </body>
  305. </html>