Need help with syntax on inheritance.

Peter Otten __peter__ at web.de
Wed Oct 4 04:20:37 EDT 2006


SpreadTooThin wrote:

> If you are deriving a new class from another class,
> that you must (I assume) know the initializer of the other class.
> 
> So in myClass
> 
> import array
> class myClass(arrary.array):
>    def __init__(self, now here I need to put array's constructor
> parameters..., then mine):
>       array.array.__init__(self, typecode[, initializer])
>       self.mine = mine
> 
> So I'm confused...
> array has a typecode parameter and an optional initiializer...
> So could you help me with the class construction here please?

Normally you would do 

# won't work
class Array(array.array):
    def __init__(self, typecode, initalizer=(), mine=None):
        array.array.__init__(self, typecode, initializer)
        self.mine = mine

However, array.array is a bit harder to subclass:

# should work
class Array(array.array):
    def __new__(cls, typecode, initializer=(), mine=None):
        return array.array.__new__(cls, typecode, initializer)
    def __init__(self, typecode, initializer=(), mine=None):
        array.array.__init__(self, typecode, initializer) 
        self.mine = mine

See if you can get away by making the array an attribute of your class
instead.

Peter



More information about the Python-list mailing list