(root)/
Python-3.12.0/
Doc/
includes/
typestruct.h
       1  typedef struct _typeobject {
       2      PyObject_VAR_HEAD
       3      const char *tp_name; /* For printing, in format "<module>.<name>" */
       4      Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
       5  
       6      /* Methods to implement standard operations */
       7  
       8      destructor tp_dealloc;
       9      Py_ssize_t tp_vectorcall_offset;
      10      getattrfunc tp_getattr;
      11      setattrfunc tp_setattr;
      12      PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)
      13                                      or tp_reserved (Python 3) */
      14      reprfunc tp_repr;
      15  
      16      /* Method suites for standard classes */
      17  
      18      PyNumberMethods *tp_as_number;
      19      PySequenceMethods *tp_as_sequence;
      20      PyMappingMethods *tp_as_mapping;
      21  
      22      /* More standard operations (here for binary compatibility) */
      23  
      24      hashfunc tp_hash;
      25      ternaryfunc tp_call;
      26      reprfunc tp_str;
      27      getattrofunc tp_getattro;
      28      setattrofunc tp_setattro;
      29  
      30      /* Functions to access object as input/output buffer */
      31      PyBufferProcs *tp_as_buffer;
      32  
      33      /* Flags to define presence of optional/expanded features */
      34      unsigned long tp_flags;
      35  
      36      const char *tp_doc; /* Documentation string */
      37  
      38      /* Assigned meaning in release 2.0 */
      39      /* call function for all accessible objects */
      40      traverseproc tp_traverse;
      41  
      42      /* delete references to contained objects */
      43      inquiry tp_clear;
      44  
      45      /* Assigned meaning in release 2.1 */
      46      /* rich comparisons */
      47      richcmpfunc tp_richcompare;
      48  
      49      /* weak reference enabler */
      50      Py_ssize_t tp_weaklistoffset;
      51  
      52      /* Iterators */
      53      getiterfunc tp_iter;
      54      iternextfunc tp_iternext;
      55  
      56      /* Attribute descriptor and subclassing stuff */
      57      struct PyMethodDef *tp_methods;
      58      struct PyMemberDef *tp_members;
      59      struct PyGetSetDef *tp_getset;
      60      // Strong reference on a heap type, borrowed reference on a static type
      61      struct _typeobject *tp_base;
      62      PyObject *tp_dict;
      63      descrgetfunc tp_descr_get;
      64      descrsetfunc tp_descr_set;
      65      Py_ssize_t tp_dictoffset;
      66      initproc tp_init;
      67      allocfunc tp_alloc;
      68      newfunc tp_new;
      69      freefunc tp_free; /* Low-level free-memory routine */
      70      inquiry tp_is_gc; /* For PyObject_IS_GC */
      71      PyObject *tp_bases;
      72      PyObject *tp_mro; /* method resolution order */
      73      PyObject *tp_cache;
      74      PyObject *tp_subclasses;
      75      PyObject *tp_weaklist;
      76      destructor tp_del;
      77  
      78      /* Type attribute cache version tag. Added in version 2.6 */
      79      unsigned int tp_version_tag;
      80  
      81      destructor tp_finalize;
      82      vectorcallfunc tp_vectorcall;
      83  
      84      /* bitset of which type-watchers care about this type */
      85      unsigned char tp_watched;
      86  } PyTypeObject;