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