小编Jef*_*eff的帖子

在Python扩展中将基础结构公开为自定义类型的成员

这个问题稍微突出了上一个问题:访问PyObject的底层结构

除了在我的版本中,我想知道如何将Point结构的字段公开为我的新类型的成员.

我看到了我能想到的每个地方,阅读了大量的Python扩展示例并阅读了许多教程,文档等,并且无法找到一种干净的方法来实现这一点.

以下是我想要做的一个例子.我有一些内部结构,我想通过Python扩展来公开,但我不想在我的代码中重新定义结构.似乎问题的主要区域是PyMemeberDef定义...... Point结构的上下文中Point结构中x或y的偏移量是多少?

非常感谢任何帮助,谢谢.

#include <Python.h>
#include <structmember.h>

// This is actually defined elsewhere in someone else's code.
struct Point {
 int x;
 int y;
};

struct PointObject {
 PyObject_HEAD
 struct Point* my_point;
 int z;
};

static PyMemberDef point_members[] = {
    {"z", T_INT, offsetof(struct PointObject, z), 0, "z field"},
    {"x", T_INT, offsetof(???), 0, "point x field"},
    {"y", T_INT, offsetof(???), 0, "point y field"},
    {NULL}
};

static PyTypeObject PointType = {
    PyObject_HEAD_INIT(NULL)
    .tp_name = "Point",
    .tp_basicsize = sizeof(PointObject), …
Run Code Online (Sandbox Code Playgroud)

c python struct

5
推荐指数
1
解决办法
525
查看次数

标签 统计

c ×1

python ×1

struct ×1