[Numpy-discussion] problem with ndarray attributes
Travis Oliphant
oliphant at ee.byu.edu
Mon Mar 27 14:15:00 CST 2006
Christopher Hanley wrote:
> Hi Travis,
>
> I have run across a feature in numpy which I am not sure how to
> handle. One of the new features of the ndarray is that named fields
> can be accessed as attributes. So, if a user created a recarray with
> fields named "address", "phone", and "names" they would be able to
> access all of the names in the recarray objects with
> "recarrayObject.names".
>
> I have found that this can cause problems when a user creates a table
> with a field name that happen to coincide with an existing class
> attribute or method. In particular, I am having a problem in pyfits
> where a user has a table with a column named "field". This column
> name is causing an attribute "field" to be created that overrides the
> existing class field method.
>
> It would seem to me that existing class methods and attributes should
> take precedence over the attributes created to correspond to column
> names. Is there a way to implement this behavior in ndarray?
>
Now that I've written that I think the class methods and attributes
should come first, I should mention, however, that a library writer
could write
ndarray.__getattribute__(a,'field')(*args)
to make sure that the method
a.field(*args)
always gets called. This seems like quite a burden to force on library
writers, though. I'd rather have users be aware of what they are using
as field names since the methods and attributes on arrays should not be
changing excessively.
-Travis
More information about the Numpy-discussion
mailing list