[Ironpython-users] instropection in an embedded engine
dinov at microsoft.com
Fri Sep 23 21:43:48 CEST 2011
__class__ exists on object in python and is then inherited by the other types. When accessing a member from
C# you get its view of the world which doesn't include Python object members. To get the Python type I suggest calling DynamicHelpers.GetPythonType.
Sent from my Windows Phone
From: Hernán Foffani
Sent: Friday, September 23, 2011 9:12 AM
To: ironpython-users at python.org
Subject: [Ironpython-users] instropection in an embedded engine
Having the following Python code:
plugin = Plugin()
and an embedded ScriptScope instance in my .NET application,
the following C# works fine
dynamic plugin = pythonEngine.GetVariable("plugin");
var attrs = plugin.__class__.__dict__;
if Plugin python class was defined as an old-style class, but fails if
Plugin inherits from object (__class__ non existent).
Under the VS debugger the dynamic object plugin shows as having three
attributes .class, .dict and .slots_and_weakref (with dots in their names) but
no __class__ or __dict__.
I found that I could do something like plugin.method.im_class.__dict__ but
I'd rather stick with the common idiom.
Is it a known issue? Something related to the way I'm using the engine?
Thanks in advance,
Ironpython-users mailing list
Ironpython-users at python.org
More information about the Ironpython-users