Am 26.02.10 06:07, schrieb darnzen:
Having an odd problem that I solved, but wondering if its the best
solution (seems like a bit of a hack).

First off, I'm using an external DLL that requires static callbacks,
but because of this, I'm losing instance info. It could be import
related? It will make more sense after I diagram it:

#Module main.py
from A import *

class App:
     def sperg(self):
          self.a = A()

app = App()
[main loop and such]
  -----------------------------
# Module A.py
import main
class Foo:
       Selves=[]
      def __init__(self):
                Foo.Selves.append(self)
      @staticmethod
      def chum_callback(nType, nP):
                # Need to access function / data in app instance
                app.sperg(nP)
                # Need to access func data in Foo
                # I'm pulling 'self' ouf of list made in constructor
                self = Foo.getSelf(nP)

      def getSelf(nP):
                return self.Selves[nP]

---------------------------------------------------------------------
So basically I added a list of instances to the base class so I can
get at them from the staticmethod.
What's bothering me the most is I can't use the global app instance in
the A.py module.

How can I get at the app instance (currently I'm storing that along
with the class instance in the constructor)?
Is there another way to do this that's not such a hack?

Sorry for the double / partial post :(

Can you show how you pass the staticmethod to the C-function? Is the DLL utilized by ctypes?

I don't see any reason you couldn't use a bound method, which would give you your self, instead relying on global state.

Diez
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to