By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,944 Members | 1,819 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,944 IT Pros & Developers. It's quick & easy.

Need help with syntax on inheritance.

P: n/a
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?

Oct 4 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a

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?
Lookup *args and **kargs in the python reference manual.

Oct 4 '06 #2

P: n/a
On 3 Oct 2006 19:09:53 -0700, SpreadTooThin <bj********@gmail.comwrote:
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?
If you need to take the same parameters as your super-class, and it
includes optional positional parameters, then simply call with
keywords to avoid the optional parameter:

myClass(typecode, mine=something)

It has less to do with defining the parameters than calling the function.
Oct 4 '06 #3

P: n/a
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
Oct 4 '06 #4

P: n/a

Peter Otten wrote:
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.
Thanks.
the =() syntax indicates what?
Just slightly off topic here but if Array had a bunch of initializers
of its own,
must all the 'optional' parameters be on the right.. ie the last
parameters?

Peter
Oct 4 '06 #5

P: n/a
SpreadTooThin wrote:
the =() syntax indicates what?
No special syntax, just an empty tuple as a default parameter.
In this case I could have used an empty list, too, but I thought I'd spare
you the dangers of mutable default values as explained here:

http://www.python.org/doc/faq/general/#id53
Just slightly off topic here but if Array had a bunch of initializers
of its own, must all the 'optional' parameters be on the right.. ie the
last parameters?
Yes.

Peter
Oct 4 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.