Is it hard to subclass recarrays? I'm currently working on a subclass that doesn't add much; just some methods that sets all the values to zero and other similarly trivial things. It'd be nice to make it work, but if I have to use external functions on a plain recarray instead of this subclass, I won't be found weeping in the corner. The constructor of this subclass just calls recarray's __init__ method, but when it does this, I get an error. The class is currently just the following: class nnvalue(N.recarray): def __init__(self, shape): N.recarray.__init__(self, shape, dtype=N.dtype([('x', 'f8'), ('dx', 'f8'), ('delta', 'f8')])) def clearGradients(self): """Fills all members other than x with zeros.""" self.dx[:] = 0. self.deltas[:] = 0. The error message reads: Traceback (most recent call last): File "/home/mkg/projects/physlearn/src/pl/modules.py", line 287, in ? mod = DynModule(states.shape[1:], controls.shape[1:], states.shape[0]) File "/home/mkg/projects/physlearn/src/pl/modules.py", line 62, in __init__ self.params = nnvalue(pSize) File "/usr/lib/python2.4/site-packages/numpy/core/records.py", line 175, in __new__ descr = format_parser(formats, names, titles, aligned, byteorder)._descr File "/usr/lib/python2.4/site-packages/numpy/core/records.py", line 44, in __init__ self._parseFormats(formats, aligned) File "/usr/lib/python2.4/site-packages/numpy/core/records.py", line 52, in _parseFormats raise ValueError, "Need formats argument" ValueError: Need formats argument Any help would be much appreciated. -- Matt
Hi Matthew On Tue, Jan 02, 2007 at 02:30:34AM -0500, Matthew Koichi Grimes wrote:
Is it hard to subclass recarrays? I'm currently working on a subclass that doesn't add much; just some methods that sets all the values to zero and other similarly trivial things. It'd be nice to make it work, but if I have to use external functions on a plain recarray instead of this subclass, I won't be found weeping in the corner.
Pierre wrote this useful wiki entry on subclassing: http://www.scipy.org/Subclasses It describes exactly what you want to do. Find attached some example code. Regards Stéfan
participants (2)
-
Matthew Koichi Grimes -
Stefan van der Walt