From: Sebastian H. <ha...@ms...> - 2004-01-17 00:01:18
|
Hi everybody, I would like to check if there has been made a decision on this ? I'm planning to use record arrays to access image data header-information and having an attribute 'f' like suggested is still my favorite way. Is anyone besides me using record arrays on memory-mapped buffers ? Thanks, Sebastian Haase ----- Original Message ----- From: "Sebastian Haase" <ha...@ms...> To: <num...@li...> Sent: Thursday, December 04, 2003 4:27 PM Subject: Fw: [Numpy-discussion] numarray.records - get/set item > 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" <pe...@st...> > To: "Sebastian Haase" <ha...@ms...>; > <num...@li...> > 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 > > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > Does SourceForge.net help you be more productive? Does it > help you create better code? SHARE THE LOVE, and help us help > YOU! Click Here: http://sourceforge.net/donate/ > _______________________________________________ > Numpy-discussion mailing list > Num...@li... > https://lists.sourceforge.net/lists/listinfo/numpy-discussion > |