python创建对象时内存的变化_从内存地址创建python对象(使用地理信息库)

_PyGObject_API接口在某个时刻发生了更改。我需要删除register_sinkfunc函数。以下工作:from gi.repository import Gio, GLib

import gi

import ctypes

class _PyGObject_Functions(ctypes.Structure):

_fields_ = [

('register_class',

ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.c_char_p,

ctypes.c_int, ctypes.py_object,

ctypes.py_object)),

('register_wrapper',

ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.py_object)),

('lookup_class',

ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_int)),

('newgobj',

ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),

]

class PyGObjectCPAI(object):

def __init__(self):

PyCObject_AsVoidPtr = ctypes.pythonapi.PyCObject_AsVoidPtr

PyCObject_AsVoidPtr.restype = ctypes.c_void_p

PyCObject_AsVoidPtr.argtypes = [ctypes.py_object]

addr = PyCObject_AsVoidPtr(ctypes.py_object(

gi._gobject._PyGObject_API))

self._api = _PyGObject_Functions.from_address(addr)

def pygobject_new(self, addr):

return self._api.newgobj(addr)

capi = PyGObjectCPAI()

从指针获取对象:

^{pr2}$

要从(g)对象获取指针:pointer = hash(obj)

我得补充一下,在我的情况下,这并没有帮助我解决实际问题。我试图与dconf接口,但是dconf返回GVariant类型的值,它不是从GObject继承的。遗憾的是,PyGI/GObject并没有公开将C(*GVariant)转换为Python所必需的函数油嘴滑舌的变体. 我想这是你不得不放弃最初的方法去尝试不同的方法的时候。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值