From: Kevin J. <ja...@bi...> - 2006-07-23 17:02:12
|
On 7/22/06, Sebastian Haase <ha...@ms...> 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 |