在pythoncapi中将新类定义为结构有什么意义

2024-04-16 07:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

The docs for Python C API描述了定义新类型的模式:

typedef struct {
    PyObject_HEAD
    PyObject *first; /* first name */
    PyObject *last;  /* last name */
    int number;
} Noddy;
...

然后可以添加init等方法。你知道吗

我的问题是-在结构中定义自定义字段有什么意义,为什么不在init中定义它们,就像在Python中一样,在self上使用PyObject_SetAttr函数调用?你知道吗


Tags: thenameapidocs类型for定义init
1条回答
网友
1楼 · 发布于 2024-04-16 07:23:44
  1. 结构成员访问远比dict查找有效。你知道吗
  2. 在C中,结构成员访问要方便得多。thing->foo要比PyObject_GetAttrString(thing, "foo")容易得多。你知道吗
  3. 使用struct成员可以存储非Python类型的数据。这允许您执行不能用Python类型实现的操作,或者用Python类型实现效率要低得多的操作。你知道吗
  4. 使用结构成员可以防止每个对象都需要自己的dict,最重要的结果是dict不必有无限的dict降序链,但它也提高了空间效率。你知道吗
  5. 这个API存在于Python级别的class语句和这些语句的工作方式之前。你知道吗

相关问题 更多 >