Fw: [Numpy-discussion] numarray.records - get/set item

Sebastian Haase haase at msg.ucsf.edu
Thu Dec 4 16:28:06 CST 2003


My situation where I got onto this, is having one field named 'mmm'
("MinMaxMean") being an 3 element array.
Now, to assign the values first I tried:
self.hdrArray = makeHdrArray(self.h)   #this makes the record array
self.hdr = self.hdrArray[0].field              #this is my shortcut to the
bound member function
   # it essentially is a solution (hack) for the getitem part
   # but regarding setitem I had to learn that "assigning to a function" is
illigal in Python - as opposed to C++
#so to do assignment  I need to do:
self.hdr('mmm')[0], self.hdr('mmm')[1], self.hdr('mmm')[2] = (mi,ma,av)

now that I'm looking at it,
self.hdrArray[0].setfield('mmm', (mi,ma,av))
would probably be better...

How about adding an attribute 'f' which could serve as a "proxy" to allow:
myRec.f.mmm = (mi,ma,av)
and maybe even additionally:
myRec.f['mmm'] = (mi,ma,av)

Regards,
Sebastian



----- Original Message ----- 
From: "Perry Greenfield" <perry at stsci.edu>
To: "Sebastian Haase" <haase at msg.ucsf.edu>;
<numpy-discussion at lists.sourceforge.net>
Sent: Thursday, December 04, 2003 3:08 PM
Subject: RE: [Numpy-discussion] numarray.records - get/set item


> > Hi,
> > Is it maybe a good idea to add this to the definition of 'class Record'
> >
> > class Record:
> >     """Class for one single row."""
> > <snip>
> >     def __getitem__(self, fieldName):
> >         return self.array.field(fieldName)[self.row]
> >     def __setitem__(self, fieldName, value):
> >         self.array.field(fieldName)[self.row] = value
> >
> > I don't know  about the implications if  __delitem __  and so on are not
> > defined.
> > I just think it would look quite nice to say
> > myRecArr[0]['mmm'] = 'hallo'
> > as opposed to
> > myRecArr[0].setfield('mmm',  'hallo')
> >
> > Actually I would even like
> > myRecArr[0].mmm = 'hallo'
> >
> > This should be possible by defining __setattr__.
> > It would obviously only work for fieldnames that do not contain '.' or '
'
> > or ...
> >
> > Any comments ?
> >
> >
> We've had many internal discussions about doing this. The latter was
> considered a problem because of possible name collisions of field
> names with other attributes or methods. The former is not bothered
> by this problem, but we decided to be conservative on this and see
> how strong the need was. We are interested in other opinions.
>
> Perry





More information about the Numpy-discussion mailing list