Bonjour,

J'ai un script python appelant un module c++.
Dans ce module, j'arrive à récupérer des int, faire des opérations dessus et les renvoyer.
J'arrive aussi à prendre un array et le renvoyer tel quel.
Ce que j'aimerai faire c'est manipuler cet array !

voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <Python.h>
 
extern "C" void initLeFlamanc(void); /* Forward */
 
/* A static module */
 
/* 'self' is not used */
static PyObject *return2NiC(PyObject * self, PyObject * args)
{
	int ni;
	int nj;
	int nk;
 
	int _ni;
	int _nj;
	int _nk;
 
	PyObject * array1; // nouvelle reference
 
 
	if (!PyArg_ParseTuple(args, "iiiO", &ni, &nj, &nk,&array1))
        	return NULL;
 
	_ni = ni * 2;
	_nj = nj * 2;
	_nk = nk * 2;
 
	// create the tuple
 
	PyObject *pTuple = PyTuple_New(10); 	// new reference 
 
	assert(PyTuple_Check(pTuple));		// Test de comoportement sur le type et la taille du Tuple
	assert(PyTuple_Size(pTuple) == 10);
 
	// set the item
 
	for (int i=0;i<=(10-1) ;i++)
	{
		PyTuple_SetItem(pTuple, i, Py_BuildValue("f",1));
	}
 
	// parse tuple items
 
	float f;
 
	if(!PyArg_ParseTuple(pTuple, "f",&f))
	    PyErr_SetString(PyExc_TypeError, "invalid parameter");
 
	// cleanup
 
	Py_DECREF(pTuple);
 
 
 
	//return Py_BuildValue("iiiO",_ni,_nj,_nk,array1);  // creation d'un objet pour retour à python
	return pTuple;
 
}
 
static PyMethodDef LeFlamancMethods[] = {
	{"return2Ni",  return2NiC, METH_VARARGS,
	 "Compute two times an integer."},
	{NULL, NULL, 0, NULL}        /* Sentinel */
};
 
 
void initLeFlamanc(void)
{
//	PyImport_AddModule("LeFlamanc");
	Py_InitModule("LeFlamanc", LeFlamancMethods);
}

lors de l'execution de mon script python, au moment de sortir l'array , il me sort :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Reading rm1_bloc_0.tp ...done.
ni= 13 nj= 9 nk= 61
Test= (<nil>, <refcnt 0 at 0x6000000000170b38>, <refcnt 0 at 0x6000000000170b20> , <refcnt 0 at 0x6000000000170b08>, <refcnt 0 at 0x6000000000170af0>, <refcnt 0 at 0x6000000000170ad8>, <refcnt 0 at 0x6000000000170ac0>, <refcnt 0 at 0x6000000 000170aa8>, <refcnt 0 at 0x6000000000170a90>, <refcnt 0 at 0x6000000000170a78>)
Writing rm1_bloc_0-essai.tp ...done.