8
我想用Python的C API做的如何通过C API在Python类中创建静态变量?
class Foo(object):
bar = 1
相当。换句话说,我想创建一个具有静态变量的Python类,使用C.
我该怎么做?
我想用Python的C API做的如何通过C API在Python类中创建静态变量?
class Foo(object):
bar = 1
相当。换句话说,我想创建一个具有静态变量的Python类,使用C.
我该怎么做?
找到了!这只是设置类型对象的tp_dict元素并为每个静态变量填充条目的问题。以下C代码创建与上面的Python代码相同的静态变量:
PyTypeObject type;
// ...other initialisation...
type.tp_dict = PyDict_New();
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1));
您可以使用适当的标志将该源代码传递给Py_CompileString。
如果你已经有了课程,你可以使用PyObject_SetAttr。
感谢您的建议!这似乎有点迂回的做法 - 有没有类似PyModule_AddIntConstant的类? – Vil 2009-12-23 16:30:01
对不起,我只是注意到你更新了你的答案。再次感谢您的帮助。 我试过使用PyObject_SetAttr,但无论何时我调用它,我得到一个TypeError的消息“无法设置内置/扩展类型X的属性”(其中X是我的类型名称)。我做错了什么,或者这是否只适用于类型对象? – Vil 2009-12-24 11:43:32
你应该粘贴你的代码? – joeforker 2009-12-25 21:37:00