pythoncapi:从C扩展使用属性decorator

2024-04-26 13:37:00 发布

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

我用C语言编写了一个python模块,它提供了一个类,包装了一个capi。C API有一些基本的访问器方法,我想在python类中作为属性呈现。例如,假设我有:

int libspam_get_eggs(spam_t *spam, int *eggs);
int libspam_set_eggs(spam_t *spam, int eggs);

我知道如何创建一个类CSpam,并向它添加get_eggs()和set_eggs()方法,但我希望将eggs作为一个属性。为了解决这个问题,我可以在对象周围放置一个python包装器:

^{pr2}$

但如果可能的话,我想用C API做所有的事情。有办法吗?在


Tags: 模块对象方法apiget属性spam事情
1条回答
网友
1楼 · 发布于 2024-04-26 13:37:00

您正在查找^{}PyGetSetDef结构。在

getter和setter函数的签名应该匹配

PyObject *libspam_get_eggs(PyObject *self, void *closure);
int libspam_set_eggs(PyObject *self, PyObject *value, void *closure);

其中closurePyGetSetDef上的void*集。在

相关问题 更多 >