> [Guido] > > > I don't understand. Methods do have a function declaration: > > > > class C: > > > > def meth(self): > > pass > > > > Or am I misunderstanding? [Mark] > The problem is I have a class object, and the source-code for the method > body as a string, generated at runtime based on runtime info from the > reflection capabilities of the system we are interfacing to. The simplest > example is for method code of "return None". > > I dont know how to get a code object for this snippet so I can use the new > module to get a new method object. Attempting to compile this string gives > a syntax error. There was some discussion a few years ago that adding > "function" as a "compile type" may be an option, but I never progressed it. > > So my solution is to create a larger string that includes the method > declaration, like: > > """def foo(self): > return None > """ > > exec that, get the function object out of the exec'd namespace and inject it > into the class. Aha, I see. That's how I would have done it too. I admit that it's attractive to exec this in the local namespace and then simply use the local variable 'foo', but that doesn't quite work, so 'exec...in...' is the right thing to do anyway. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4