I'm curious about the difference between

float_subtype_new  in floatobject.c
complex_subtype_from_c_complex in complexobject.c

The former uses type->tp_alloc(type, 0) to create memory for the object
while the latter uses PyType_GenericAlloc(type, 0) to create memory for
the sub-type (thereby by-passing the sub-type's own memory allocator).

It seems like this is a bug.   Shouldn't type->tp_alloc(type, 0) also be
used in the case of allocating complex subtypes?

This is causing problems in NumPy because we have a complex type that is
a sub-type of the Python complex scalar.  It sometimes uses the
complex_new code to generate instances (so that the __new__ interface is
the same),  but because complex_subtype_from_c_complex is using
PyType_GenericAlloc this is causing errors.

I can work around this by not calling the __new__ method for the base
type but this is not consistent.


Thanks for any feedback,

P.S.  Sorry about the cross-posting to another thread.  I must have hit 
reply instead of compose.  Please forgive the noise.


-Travis

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to