[Numpy-discussion] Please help with subclassing numpy.ndarray
Jeremy Conlin
jeremit0@gmail....
Tue Feb 6 07:14:13 CST 2007
On 2/6/07, Sturla Molden <sturla@molden.no> wrote:
>
> > def __new__(cls,...)
> > ...
> > (H, edges) = numpy.histogramdd(..)
> > cls.__defaultedges = edges
> >
> > def __array_finalize__(self, obj):
> > if not hasattr(self, 'edges'):
> > self.edges = self.__defaultedges
>
> So in order to get an instance attribute, one has to temporarily define it
> as a class attribute? What happens if there is a thread switch between
> __new__ and __array_finalize__? This design is not thread safe and can
> produce strange race conditions.
>
> IMHO, the preferred way to set an instance attribute is to use __init__
> method, which is the 'Pythonic' way to do it.
>
> Sturla Molden
>
Yes using __init__ to set an instance attribute is the Pythonic way to
do this. However, I calculate/create the data in __new__. The data
is unavailable to __init__.
Jeremy
More information about the Numpy-discussion
mailing list