在_字段中混合ctypes和python类_

在_字段中混合ctypes和python类_,python,gstreamer,ctypes,gobject,Python,Gstreamer,Ctypes,Gobject,我正在尝试为使用gobject的结构创建ctypes包装器 结构定义如下: struct GstMetaStruc { GstMeta meta; GstStructure* structure; }; GstMeta有一个现有的内省包装器,它为我提供了对基本元对象的访问 我目前的错误做法如下所示: import ctypes import gi gi.require_version("Gst", "1.0") from gi.repository import Gst

我正在尝试为使用gobject的结构创建ctypes包装器

结构定义如下:

struct GstMetaStruc
{
    GstMeta meta;

    GstStructure* structure;
};

GstMeta有一个现有的内省包装器,它为我提供了对基本元对象的访问

我目前的错误做法如下所示:

import ctypes
import gi

gi.require_version("Gst", "1.0")

from gi.repository import Gst

class TcamMeta(ctypes.Structure):
    """

    """
    _fields_ = [("meta", Gst.Meta),
                ("structure", ctypes.POINTER(Gst.Structure))]
是否可以将ctype定义与现有的python包装类混合使用?
是否有更好的方法为派生类型定义python类?

状态(emphasis是我的):

结构和联合必须派生自模块中定义的和基类。每个子类都必须定义一个_fields_u属性_fields_uu必须是包含字段名和字段类型的2元组列表

字段类型必须类似于或任何其他派生类型:结构、联合、数组、指针

_字段u成员作为描述符实现,这意味着它们是“特殊的”(与常规类成员相比)。因此,在声明结构时会执行一些检查

>将ctypes作为ct导入
>>>
>>>甲级:及格
...
>>>0级结构(ct结构):通过
...
>>>类Stru1(ct.Structure):\u字段[u=[(“c”,Stru0)]
...
>>>类Stru1(ct.Structure):_字段=[(“c”,ct.c_float)]
...
>>>类结构1(ct.Structure):_字段=[(“c”,int)]
...
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:_fields_元组(索引0)中的第二项必须是C类型
>>>类别结构1(ct.Structure):[字段][(“c”,A)]
...
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:_fields_元组(索引0)中的第二项必须是C类型
所以,如果你没有得到一个打字错误,你可能是好的。但简单地看一下PyGObject示例,您不应该处于需要这样做的情况