[EMAIL PROTECTED] a écrit : > I don't understand what I don't understand in the following:
You already have the answer (hint: a Python module is sequentially executed when loaded by the interpreter) Just a couple side notes: > # but I need locations, so this is impure, 11-line, Python: > > line_ptr = 0 > for line in text: > output = '' > char_ptr = 0 > > for char in line: > output += char > char_ptr += 1 > > print output, > line_ptr += 1 Use enumerate and a for loop. for line_ptr, line in enumerate(text): for char_ptr, char in enumerate(line): print "char %s of line %s is %s" % (char_ptr, line_ptr, char) > # with a Loc object, 10 lines (not counting the Loc class): > > loc = Loc(0,0) # Name error: name 'Loc' is not defined Indeed. It is not yet defined at this time. Remember that in Python, almost everything happens at runtime. (snip) I think you're going to have a hard time if you don't read about Python's object model... > class Loc: Better to use new-style classes unless you have compelling reasons to stick with the very outdated 'classic' model. class Loc(object): > line = 0 > char = 0 This define two class attributes - that is, attributes that are members of the Loc class object (*not* Loc instances), and so are shared by all instances. This is probably not what you want. > def __init__(self, l, c): > line = l > char = c This defines two local variables line and char, bind them to resp. l and c, then returns - discarding locals of course. The use of 'self' is *not* optional in Python. Within the function, it's a reference to the current instance. If you want to define instance attributes, you have to set these attributes on the current instance. def __init__(self, line, char): self.line = line self.char = char > def nextChar(self): > char += 1 NameError here. You want self.char > def nextLine(self): > line += 1 NameError here. You want self.line > char = 0 Local variable, discarded when exiting the function. You want self.char > def repr(self): > return 'Loc: line='+str(line)+', char='+str(char) NameError * 2, etc... Also, Python has string formatting: def __repr__(self): return "<Loc: line=%s - char=%s>" % (self.line, self.char) HTH -- http://mail.python.org/mailman/listinfo/python-list