您尚未登录。

楼主 # 2023-04-20 21:27:51

li460135301
会员
注册时间: 2023-04-20
已发帖子: 4
积分: 4

我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗?

我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗?
听说可以通过__getattr__,__setattr__来实现,但是具体怎么使用,有相关的参考或者说明吗?非常感谢!

离线

楼主 #4 2023-04-21 13:48:16

li460135301
会员
注册时间: 2023-04-20
已发帖子: 4
积分: 4

Re: 我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗?

@lyon1998
你这个操作只是操作变量,如果我要操作的是数组呢?要怎么操作,可以直接用list类型吗?

离线

楼主 #6 2023-04-25 23:58:26

li460135301
会员
注册时间: 2023-04-20
已发帖子: 4
积分: 4

Re: 我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗?

lyon1998 说:
li460135301 说:

@lyon1998
你这个操作只是操作变量,如果我要操作的是数组呢?要怎么操作,可以直接用list类型吗?

可以用一个对象的 __gitiem__ 和 __setitem__ 来做绑定

按照你说的,是这样操作吗?我好像操作了数组是无法绑定的!还是没有理解。谢谢!
···
# test.py
import _test
class DataBinding:
    def __setattr__(self, name, val):
        _test._set(name, val)
    def __getitem__(self, name, key):
        return _test._getitem(name, key)
    def __setitem__(self, name, key, val):
        print('name:', name)
        print('key:', key)
        print('val:', val)
        _test._setitem(name, key, val)
    def IN(self, addr: int) -> int:
        return _test._in(addr)
···

···
# _test.pyi
def _get(self, name: str) -> int: ...
def _set(self, name: str, val: int): ...
def _getitem(self, name: str, key: int) -> int: ...
def _setitem(self, name: str, key: int, val: int): ...
···

离线

楼主 #8 2023-04-29 14:29:09

li460135301
会员
注册时间: 2023-04-20
已发帖子: 4
积分: 4

Re: 我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗?

@lyon1998
好的,非常感谢,已经测试通过.

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn