2010-11-12 19 views
31

कहो मैं अपने वस्तु लेआउट को परिभाषित किया है के रूप में उपयोग करते हुए एक वस्तु बनाएं कहीं मेरे सी विस्तार के भीतर?पायथन के सी एपीआई

उत्तर

33

PyObject_New() पर कॉल करें, इसके बाद PyObject_Init() पर जाएं।

संपादित करें: सबसे अच्छा तरीका है call के वर्ग वस्तु सिर्फ अजगर अपने आप में की तरह है,:

/* Pass two arguments, a string and an int. */ 
PyObject *argList = Py_BuildValue("si", "hello", 42); 

/* Call the class object. */ 
PyObject *obj = PyObject_CallObject((PyObject *) &pyfoo_T, argList); 

/* Release the argument list. */ 
Py_DECREF(argList); 
+2

मैं मानता हूँ डॉक्स उस मामले में एक छोटे से संक्षिप्त कर रहे हैं। मैंने अपने उत्तर को 'PyObject_Init() 'के लिए आवश्यक कॉल के साथ अपडेट किया। –

+0

प्रतीक्षा करें, 'PyObject_Init()' कोई तर्क नहीं लेता है, तो आप आवश्यक प्रारंभिक तर्कों में कैसे जाते हैं? – detly

+0

@ हाल ही में, आपको कक्षा वस्तु को कॉल करने की आवश्यकता है। मेरा अद्यतन उत्तर देखें। –