Greg Reyna wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">Learning
Python (on a Mac), with the massive help of Mark Lutz's excellent
book, "Learning Python".
What I want to do is this:
I've got a Class Object that begins with a def. It's designed to be
fed a string that looks like this:
"scene 1, pnl 1, 3+8, pnl 2, 1+12, pnl 3, 12, pnl 4, 2+4,"
I'm parsing the string by finding the commas, and pulling out the data
between them.
No problem so far (I think...) The trouble is, there is a place where
code is repeated:
1. Resetting the start & end position and finding the next comma in
the string.
In my previous experience (with a non-OOP language), I could create a
'procedure', which was a separate function. With a call like:
var=CallProcedure(arg1,arg2) the flow control would go to the
procedure, run, then Return back to the main function.
In Python, when I create a second def in the same file as the first it
receives a "undefined" error. I can't figure out how to deal with
this. How do I set it up to have my function #1 call my function #2,
and return?
The only programming experience I've had where I pretty much knew what
I was doing was with ARexx on the Amiga, a language much like Python
without the OOP part. ARexx had a single-step debugger as part of the
language installation. I've always depended on a debugger to help me
understand what I'm doing (eg Script Debugger for Apple Script--not
that I understand Apple Script) Python's debug system is largely
confusing to me, but of course I'll keep at it. I would love to see a
step-by-step debugging tutorial designed for someone like me who
usually wants to single-step through an entire script.
Thanks for any help,
Greg Reyna
You should post an example. Otherwise we can just make wild guesses.
So for a wild guess, perhaps your question is how an instance method
calls another instance method. But to put it briefly, a def inside a
class definition does not create a name at global scope, but instead
defines a method of that class. Normally, you have to use an object of
that class as a prefix to call such a function (with the exception of
__init__() for one example).
class A(object):
def func1(self, parm1, parm2):
do some work
self.func2(arg1)
do some more work
def func2(self, parm1):
do some common work
q = A()
q.func1("data1", "data2")
Here we use q.func1() to call the func1 method on the q instance of the
class. We could also call q.func2() similarly. But I think you may
have been asking about func1 calling func2. Notice the use of
self.func2(). Self refers to the object of the method we're already in.
--
http://mail.python.org/mailman/listinfo/python-list