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

Reply via email to