Constructor class problem

W

Wolfgang

Hi,
I am a newbie and have to modify some python moduls.
I get the followin error:
TypeError: __init__() takes exactly 3 arguments (2 given)

Here the code snippet:
class gXconv:
def __init__(self, pathValue):
self.pathValue=pathValue
self.__sections = {}
self.__spalten = {}
self.labelfiles=[]
etc.....

call:
try:
gx=gXconv.gXconv(gXconfPath)
except gXconv.gXconvertError, msg:
print msg
sys.exit(1)

Hoping for hints.....
Wolfgang
 
D

Diez B. Roggisch

Wolfgang said:
Hi,
I am a newbie and have to modify some python moduls.
I get the followin error:
TypeError: __init__() takes exactly 3 arguments (2 given)

Here the code snippet:
class gXconv:
def __init__(self, pathValue):
self.pathValue=pathValue
self.__sections = {}
self.__spalten = {}
self.labelfiles=[]
etc.....

call:
try:
gx=gXconv.gXconv(gXconfPath)
except gXconv.gXconvertError, msg:
print msg
sys.exit(1)


That error can't appear in the above code - is the line in the stacktrace
amongst the shown ones? I doubt it.

The error means that you tried to call a function with less arguments than
it expected. As in __init__ the first argument is implicit on creation of
an object, the above errormessage indicates that there is an __init__
of the form

class Foo:
def __init__(self, arg1, arg2)
pass

called like this

Foo("bar")

But as the only constructor you show _has_ only one additional argument
besides self and line

gx=gXconv.gXconv(gXconfPath)

shows that you called it properly, the error must come from somewhere else.
 
J

Joal Heagney

Diez said:
Wolfgang wrote:

Hi,
I am a newbie and have to modify some python moduls.
I get the followin error:
TypeError: __init__() takes exactly 3 arguments (2 given)

Here the code snippet:
class gXconv:
def __init__(self, pathValue):
self.pathValue=pathValue
self.__sections = {}
self.__spalten = {}
self.labelfiles=[]
etc.....

call:
try:
gx=gXconv.gXconv(gXconfPath)
except gXconv.gXconvertError, msg:
print msg
sys.exit(1)



That error can't appear in the above code - is the line in the stacktrace
amongst the shown ones? I doubt it.

The error means that you tried to call a function with less arguments than
it expected. As in __init__ the first argument is implicit on creation of
an object, the above errormessage indicates that there is an __init__
of the form

class Foo:
def __init__(self, arg1, arg2)
pass

called like this

Foo("bar")

But as the only constructor you show _has_ only one additional argument
besides self and line

gx=gXconv.gXconv(gXconfPath)

shows that you called it properly, the error must come from somewhere else.

And the easiest way to track it down is to add some temporary
print "I am in <some function or method name>."
debug messages through your code.
By looking at which messages pop up, you can trace what happens just
before your program bombs.

Joal
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,222
Messages
2,571,142
Members
47,775
Latest member
MadgeMatti

Latest Threads

Top