strange problem with def in class
James Henderson
james at logicalprogression.net
Tue Aug 17 20:56:40 EDT 2004
Johan wrote:
> I don't get it:
> I'm trying to write a "readfile" function which would replace some code from
> a __init__ function:
>
> 1 import string
> 2 class landdict:
> 3 def __init__(self, file):
> 4 # Laadt de dictionnary van landen.
> 5 # Kijk in de actiefspel-file voor de file van waaruit je
> moet laden.
> 6 self.ld = {}
> 7 f = open(file, "r")
> 8 line = f.readline()
> 9 if line[0] == "#":
> 10 line = f.readline()
> 11 while line != "":
> 12 key = line[0:3]
> 13 self.ld[key] = string.split(line[4:], ':')
> 14 line = f.readline()
> 15 print self.ld
>
> So I would like to replace the code from line 7 to line 14 with
>
> readfile(filename)
>
> while
>
> def readfile(filename) is another function in the class
>
> but I can't define this function.... when I call the function the
> interpreter throws an exception of unknown function
> what am I doing wrong?
Hi Johan
Other variables defined in a class are in a scope that cannot be
accessed directly from within a method (Python newish nested scoping
only works for functions inside functions).
Personally I would move your readline() function outside the class to
the module level.
If you want to keep it in the class then either give it a self parameter
or add "readline = staticmethod(readline)" after the definition of
readline(). Then you can call it from within __init__() as
self.readline(filename).
HTH,
James
More information about the Python-list
mailing list