__getitem__

Giorgi Lekishvili gleki at gol.ge
Thu Jan 24 20:51:01 EST 2002


Hi!

I must have been doing a stupid error. The situation is like follows:

First, I have written a simple matrix module in C. This works fine.

Then, I made a SWIG interface file:
#####
%module matrix
%{
#include "matrix.h"
%}

%include "matrix.h"


extern matrix* m_new(int nrows, int ncols);
extern int m_init(matrix* m);
extern int m_add(matrix* m_sum, matrix* m1, matrix* m2);

extern int m_addrow(matrix* m,char* words[], int at);
extern void m_free(matrix* m);
extern float m_item(matrix *m, int i, int j);
extern float* m_item_ptr(matrix* m, int i, int j);

extern int m_getrow(matrix* row, matrix* m, int which_row);


%addmethods matrix {
 matrix(int nrows, int ncols){
  matrix* m;
  if (m=m_new(nrows,ncols)==NULL)
   return m;
  m_init(m);
  return m;
  };
 ~matrix(){
  m_free(self);
  };
 float* __getitem__(int i, int j){
  return m_item_ptr(self, i, j);
  };
 };
##########

the matrix structure is as follows:
typedef struct MATRIX {
  int ncols, nrows;
  float* data;
} matrix;
###########

import matrix

class PyM:
 def __init__(self, i, j):
  self.this=matrix.new_matrix(i,j)
  self.nrows=i
  self.ncols=j

 def __getitem__(self, i, f):
  return matrix.matrix___getitem__(self.this,i,j)
#########

however,
>>>import PyM
>>>m=PyM.PyM(3,4)
>>>m[0][0]
TypeError: not enough argumets, expected 3, got 2.

#############

What's wrong?

Thanx in advance.
GRTZ,
Giorgi





More information about the Python-list mailing list