Kevin Jacobs <[EMAIL PROTECTED]> wrote: > On 7/22/06, *Sebastian Haase* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > Normally I could do > class B(N.ndarray): > pass > a=N.arange(10) > a.__class__ = B > > BUT I get this error: > #>>> a.__class__ = B > Traceback (most recent call last): > File "<input>", line 1, in ? > TypeError: __class__ assignment: only for heap types > > What is a "heap type" ? Why ? How can I do what I want ? > > > > Assigning to __class__ makes sense for objects that allocate a > dictionary for storage of attributes or have slots allocated to hold the > values. The heap type error is due to a missing flag in the class > definition and could be corrected. However, it may not be the best > thing to do. Calling B(array) is certainly safer, although a bit more > expensive. > > -Kevin > Thanks for the replies.
Googling for this I was surprised myself that it IS legal (and done) to assign to obj.__class__. Kevin, I tried what you suggested first -- I think in C++ it would be called "using the copy-constructor". But I get an error - something like: "__new__() needs at least 3 arguments" In other words: (maybe?) in Python there is not always a "copy-constructor" (in fact there is no constructor overloading at all ...) So if there is "just a missing flag" - it would be great if this could be put in. It turns out that the "assigning to __class__"-scheme worked for the ndarray subclass "memmap" (i.e. I was sub classing from memmap and then I could assing origMemmapObj.__class__ = myClass) Thanks, Sebastian Haase ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpy-discussion