2009-12-23 96 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