Subclassing array

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Thu May 4 17:49:58 EDT 2006


Sion Arrowsmith a écrit :
> Alex Martelli <aleaxit at yahoo.com> wrote:
> 
>>TG <girodt at gmail.com> wrote:
>>
>>>When I call Vector.__init__() in Stimulus, doesn't it also call __new__
>>>? I don't understand the detail of callings to __new__ and __init__ in
>>>python inheritance ...
>>
>>Calling a (new-style) class does __new__ first, THEN calls the class's
>>__init__ on the resulting instance -- and the arguments you're passing
>>when calling the class go to both __new__ and __init__.
> 
> 
> ... so you might want something like:
> 
> class Vector(array):
>     def __new__(cls,*args):
>         return super(Vector,cls).__new__(cls,'f')
> 
And if you want to support named arguments:

class Vector(array):
     def __new__(cls,*args, **kw):
         return super(Vector,cls).__new__(cls,'f')



More information about the Python-list mailing list