En Thu, 03 May 2007 04:54:43 -0300, vml <[EMAIL PROTECTED]> escribió:
> I have a python com object which contains a method to inverse an array > in vb 6 the definition of the class is : > > class Fop: > _public_methods_ = [ 'SqVal' ] > def SqVal(self,*val): > #vol=(val[0][0],val[0][1]) > #mat1=mat((vol)) > #up=linalg.inv(mat1) > return str(val)#up > _reg_verprogid_ = "Python.Fop.3" > _reg_progid_ = "Python.Fop" > _reg_desc_ = "Python Fop" > _reg_clsid_ = "{30BD3490-2632-11cf-AD5B-524153480001}" > > I pass to this method an array of variant which is the matrix to > invert like that: > vb6 code : > > > Set obj = CreateObject("Python.Fop") > Dim ty(1, 1) As Variant > > ty(0, 0) = 1 > ty(1, 0) = 2 > ty(0, 1) = 3 > ty(1, 1) = 4 > > toto = obj.SqVal(ty) > > > when I dispaly toto as str(val) I obtain the following tuple "(((1, > 3), (2, 4)),)" which is not usable .... > > Do you have an idea to explain this strange behaviour ? This is the expected behaviour. Writing it completely in Python: py> def SqVal(*val): ... return str(val) ... py> ty=((1,3),(2,4)) py> SqVal(ty) '(((1, 3), (2, 4)),)' The *val parameter receives a tuple, whose elements are the positional arguments used when calling the function. As you call the function with a single argument, val receives a tuple with a single element. Perhaps you want to write it as: py> def SqVal(val): ... print val[0][0] ... print val[0][1] ... print val[1][0] ... print val[1][1] ... py> SqVal(ty) 1 3 2 4 (Of course, if used as a Fop method, dont forget the "self" parameter) -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list