2009-12-23 49 views

回答

5

找到了!这只是设置类型对象的tp_dict元素并为每个静态变量填充条目的问题。以下C代码创建与上面的Python代码相同的静态变量:

PyTypeObject type; 
// ...other initialisation... 
type.tp_dict = PyDict_New(); 
PyDict_SetItemString(type.tp_dict, "bar", PyInt_FromLong(1)); 
2

您可以使用适当的标志将该源代码传递给Py_CompileString

如果你已经有了课程,你可以使用PyObject_SetAttr

+0

感谢您的建议!这似乎有点迂回的做法 - 有没有类似PyModule_AddIntConstant的类? – Vil 2009-12-23 16:30:01

+0

对不起,我只是注意到你更新了你的答案。再次感谢您的帮助。 我试过使用PyObject_SetAttr,但无论何时我调用它,我得到一个TypeError的消息“无法设置内置/扩展类型X的属性”(其中X是我的类型名称)。我做错了什么,或者这是否只适用于类型对象? – Vil 2009-12-24 11:43:32

+0

你应该粘贴你的代码? – joeforker 2009-12-25 21:37:00