On Sat, May 17, 2008 at 1:45 PM, Charles R Harris <[EMAIL PROTECTED]>
wrote:

>
>
> On Sat, May 17, 2008 at 1:18 PM, Anne Archibald <[EMAIL PROTECTED]>
> wrote:
>
>> 2008/5/17 Brian Blais <[EMAIL PROTECTED]>:
>>
>> > at least for me, that was the motivation.  I am trying to build a
>> simulation
>> > framework for part of the brain, which requires connected layers of
>> nodes.
>> >  A layer is either a 1D or 2D structure of nodes, with each node a
>> > relatively complex beast.  Rather than reinvent the indexing (1D, 2D,
>> > slicing, etc...), I just inherited from ndarray.  I thought, after the
>> fact,
>> > that some numpy functions on arrays would help speed up the code, which
>> > consists mostly of calling an update function on all nodes, passing each
>> > them an input vector.  I wasn't sure if there would be any speed up for
>> > this, compared to
>> > for n in self.flat:
>> >    n.update(input_vector)
>> > From the response, the answer seems to be no, and that I should stick
>> with
>> > the python loops for clarity.  But also, the words of Anne Archibald,
>> makes
>> > me think that I have made a bad choice by inheriting from ndarray,
>> although
>> > I am not sure what a convenient alternative would be.
>>
>> Well, it doesn't exist yet, but a handy tool would be a factory
>> function "ArrayOf"; you would pass it a class, and it would produce a
>> subclass of ndarray designed to contain that class.
>
>
> Subclasses should generally be avoided unless they satisfy the "is a"
> criterion, which I don't think a matrix stack does. That is to say, a
> subclass should behave as an ndarray in *all* ways except for added
> functionality. All we want is an item type with dimensions.
>

Base classes also tend to have limited functionality that will be common to
all derived types. The object type in Python has only a few methods and
attributes:

In [4]: dir(object)
Out[4]:
['__class__',
 '__delattr__',
 '__doc__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__str__']

And overloading any of these is likely to cause trouble.

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to