[Numpy-discussion] subclassing float64 (and friends)
eric jones
eric at enthought.com
Wed Jan 3 18:12:40 EST 2007
Thanks for the update. For now, I'll try doing what I need to by
sub-classing float. But, I'm gonna miss __array_finalize__ :-).
eric
Travis Oliphant wrote:
> eric jones wrote:
>
>
>> Hey all,
>>
>> I am playing around with sub-classing the new-fangled float64 objects
>> and friends. I really like the new ndarray subclassing features
>> (__array_finalize__, etc.), and was exploring whether or not the scalars
>> worked the same way. I've stubbed my toe right out of the blocks
>> though. I can sub-class from standard python floats just fine, but when
>> I try to do the same from float64, I get a traceback. (examples below)
>> Anyone have ideas on how to do this correctly?
>>
>>
>>
>
> Unfortunately, the array scalars were not originally designed to be
> sub-classed. I believe I later set the flag saying they "could be"
> sub-classable. However, I did not alter the tp_new code to actually use
> the type information passed in as the first argument to actually create
> an instance of the sub-class --- effectively making the array scalars
> *not* sub-classable.
>
> Thus, the _arrtype_new code would need to be changed in
> scalartypes.inc.src to fix this. Notice that in Python the float_new
> command does a special check for when a sub-type is requested and calls
> float_subtype_new which creates a regular float and then copies the data
> over to the sub-type.
>
> This special-check is not done in the tp_new function
> (<name>_arrtype_new) and so float64.__new__ will *always* return the
> array scalars are still not sub-classable (except for the void
> scalar). This could be changed, and needs to happen before
> sub-classing of array scalars will work.
>
> -Travis
>
>
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>
More information about the NumPy-Discussion
mailing list