I have two classes, Field
and Background
. They look a little bit like this:
class Field( object ):
def __init__( self, a, b ):
I expected Background init() to be called
Actually Background init()
is getting called..
But take a look at your Background class..
class Background( Field ):
def __init__( self, a, b, c ):
super(Background, self).__init__( a, b )
self.field = self.buildField( c )
So, the first statement of __init__
is invoking the super class(Field)
init method.. and passing the self
as argument.. Now this self
is actually a reference of Background class
..
Now in your Field class: -
class Field( object ):
def __init__( self, a, b ):
print self.__class__ // Prints ``
self.a = a
self.b = b
self.field = self.buildField()
Your buildField()
method is actually invoking the one in the Background class.. This is because, the self
here is instance of Background
class(Try printing self.__class__
in your __init__
method of Field class
).. As you passed it while invoking the __init__
method, from Background
class..
That's why you are getting error..
The error "TypeError: buildField() takes exactly 2 arguments (1 given).
As you are not passing any value.. So, only value passed is the implicit self
.