我有一个关于静态变量和类型对象的小问题。 我使用API C包装一个C++对象(我们称之为Acpp),它有一个名为x的静态变量。 我们称我的TypeObject为_Object:
typedef struct {
PyObject_HEAD
Acpp* a;
} A_Object;
TypeObject作为“A”附加到python模块“myMod”。我定义了getter和setters(tp getset),这样我就可以从python访问和修改Acpp的静态变量:
^{pr2}$这个解决方案可行,但并不真正“干净”。我想使用TypeObject而不是实例来访问python中的静态变量:
>>> import myMod
>>> myMod.A.x = 34 # what I wish...
有人有办法帮我吗?在
提前谢谢。在
本质上,你要做的就是定义一个“静态属性”。也就是说,您希望在获取/设置类的属性时调用函数。在
记住这一点,您可能会发现this thread很有趣。它只讨论了这个问题的Python级解决方案,而不是C扩展类型,但它涵盖了基本原则。在
要实现该线程中为C扩展类型提出的解决方案,我认为您必须初始化
tp_dict
,并为“x”添加一个条目,该条目的值是适当实现__get__
的对象。在您可以在a_对象中添加一个虚拟的'x'字段并创建一对set/get方法。当您访问虚拟的“x”字段时,该方法会将调用重定向到静态“x”字段。在
相关问题 更多 >
编程相关推荐