PyObject_CallMethod self問題

類函數的第1個參數是self,c++傳參沒有傳self,

導致python接收參數錯誤

void main() {

	Py_Initialize();
	PyObject* module = PyImport_ImportModule("bbb");
	assert(module != NULL); // Returned non-null object

	PyObject* MyPyClass = PyObject_GetAttrString(module, "BasicStats");
	assert(MyPyClass != NULL);// Returned non-null object

	PyObject* myClassInstance = PyInstanceMethod_New(MyPyClass);
	assert(myClassInstance != NULL);// Returned non-null object

	PyObject* result = PyObject_CallMethod(myClassInstance, "AddItem", "(i)", 1);
	assert(result != NULL); // Failed - returned NULL

	result = PyObject_CallMethod(myClassInstance, "AddItem", "(i)", 2);
	assert(result != NULL); // Failed - returned NULL

	result = PyObject_CallMethod(myClassInstance, "get_Max", NULL);
	assert(result != NULL); // Failed - returned NULL

	printf("Min = %ld\n", PyLong_AsLong(result));
	printf("Min = %f\n", PyFloat_AsDouble(result));
	system("Pause");
}
class BasicStats:
    def __init__(self):
        self._m_min = self._m_max = self._m_sum = self._m_sumSqr = 0
        self._m_count = 0
        self.Reset()

    def Reset(self):
        self._m_min = float("inf")
        self._m_max = float("-inf")
        self._m_sum = self._m_sumSqr = 0
        self._m_count = 0

    def AddItem(value):
        print('add',value)
        return value
        # self._m_count += 1
        # if self._m_max < value:
        #     self._m_max = value
        # return self._m_count

    def get_Max(self):
        return self._m_max

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章