staticmethod and namespaces
Diez B. Roggisch
deets at nospam.web.de
Fri Feb 26 04:15:47 EST 2010
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
More information about the Python-list
mailing list