Dynamic/runtime code introspection/compilation

Leo Kislov Leo.Kislov at gmail.com
Tue Nov 28 08:31:44 EST 2006


Thomas W wrote:
> Maybe a stupid subject, but this is what I want to do :
>
> I got some python code stored in a string:
>
> somecode = """
>
> from somemodule import ISomeInterface
>
> class Foo(ISomeInterface):
>     param1 = ...
>     param2 = ....
>
> """
>
> and I want to compile that code so that I can use the Foo-class and
> check what class it extends, in this case ISomeInterface etc. I've
> tried eval, codeop etc. but it doesn't work. Something like this would
> be nice :
>
> from somemodule import ISomeInteface
>
> d = compile(sourcecode)
>
> myfoo = d.Foo()
>
> print ISomeInterface in myfoo.__bases__
>
> Any hints?

Here is hello world program for plugins:

import sys

somecode = """
class Foo:
   param1 = "Hello, world!"
"""

plugin = type(sys)('unknown_plugin') # Create new empty module
exec somecode in plugin.__dict__

print plugin.Foo.param1

  -- Leo




More information about the Python-list mailing list