From: Todd M. <jm...@st...> - 2003-09-25 20:19:52
|
On Thu, 2003-09-25 at 12:14, Colin J. Williams wrote: > Todd, > > Thanks for the benchmark data. Thanks for the references. They suggest that the classmethod approach we've already tried for folding in the numarray factory functions is reasonable OOP. > I intend to post the matrix stuff. Performance is not a problem for me > at this stage. > > Currently, I'm plodding along, making things work. Later, I'll post it > with some rudimentary documentation. > > Regarding the "new-classes standard", I can't find much in either the > Python docs or Alex Martelli's "Python in a Nutshell". One of the new > features is a __new__ constructor. Well, we've certainly got those (__new__ methods). They don't match the __init__ signature though, nor was I aware that they should. > The Python array module doesn't formally have a class and thus it can't > be sub-classed. It uses a factory function to create instance objects. > > Martelli, in PIAN p74, writes of factory functions being useful when one > wishes to create instances of different classes depending on some > condition or for the reuse of an existing instance. > > In the Python Cookbook p173, he proposes the use of a factory function > to get around the limitations of Python 2.1 and earlier. On page 179, > he refers to the use of a factory method, again to work around > limitations before Python 2.2. > > My rough and ready definition would include the ability to create an > instance and initialize > the data in one step. > One thing to keep in mind is that NumArray was designed to run on Python-2.0. As Python-2.2 became widely available and stable, we realized we could exploit it for better C-API compatibility with Numeric, and for better speed. I think what you and later Nadav have pointed out is that we can exploit Python-2.2 for better sub-classing as well. We just haven't done it yet. Concrete proposals are welcome. Regards, Todd |