deriving from array.array

Alf P. Steinbach alfps at start.no
Tue Jan 26 13:24:27 EST 2010


* Torsten Mohr:
> Hello,
> 
> i try to derive a class from array.array:
> 
> 
> import array
> 
> class Abc(array.array):
>     def __init__(self, a, b):
>         array.array.__init__(self, 'B')
>         self.a = a
>         self.b = b
> 
> 
> a = Abc(4, 5)
> print a
> print a.a
> 
> 
> I get an error for "a = Abc(4, 5)", seems the parameters are
> forwarded to array's __init__ as they are.

No, with CPython they're forwarded to __new__.


>  Though i explicitly
> call __init__() for array.

That's the constructor inherited from 'object', it takes no args (except the 
self arg).


> I'd like to use array and make sure it's type is always 'B'.
> I'd like to derive because i don't want to rewrite all the methods like 
> __getiem__ for my class and then call array's __getitem__.
> 
> How do i best derive from array.array?

<code>
import array

class ByteArray( array.array ):
     def __new__( self, *args ):
         return array.array.__new__( self, "B" )

     def __init__( self, a, b ):
         array.array.__init__( self )
         self.a = a
         self.b = b

a = ByteArray( 4, 5 )
print( a )
print( a.a )
</code>


Disclaimer: I'm not a Python programmer. :-)


Cheers & hth.,

- Alf



More information about the Python-list mailing list