Kevin Walzer a écrit :
I'm trying to make use of a Python library, aemreceive, that provides a
procedural API. (aemreceive is a library for Python on the Mac that
allows the application to receive and respond to Apple Events.)
My Python apps basically run in a single fooApp class, and everything
runs inside the class. To launch the app (my apps are Tkinter-based), I
use something like this:
if __name__== '__main__':
app = fooApp(None)
app.mainloop()
In keeping with aemreceive's procedural API, I've added a runCommand
function inside the app class to provide some basic functionality in
response to Apple Events it will set some objects/variables, then
display the output in the app. In my code it looks like this:
def runCommand(string):
self.searchterm=string
self.servertree.selection_set('Default')
self.getInfo()
When I test this command, I get an error from Python: "self" is not
defined.
Indeed.
I think I understand what is going here. All of the other functions in
the fooApp class take "self" as a parameter, i.e. they are components of
the class.
It actually works the other way round : it's because they are
"components" (we prefer to say "attributes") of the class that they take
the current instance as first param. FWIW, the following syntaxes are
functionnaly equivalent:
obj = MyClass()
obj.some_method()
MyClass.some_method(obj)
# if some_method is not inherited:
MyClass.__dict__['some_method'](obj)
Anyway:
runCommand is not, so therefore "self" is undefined. My
question is, how can I get the values from the class (self.searchterm,
s/class/instance/ here.
et.al) inside the runCommand function?
The usual way - adds the relevant param:
def runCommand(self, string):
self.searchterm=string
self.servertree.selection_set('Default')
self.getInfo()
The problem is that you don't provide much information about how this
function is actually called.
--
http://mail.python.org/mailman/listinfo/python-list