how to get ironpython method parameters using .net

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
here is my python code:#filename:animal.py
__metaclass__=type
class Animal():
def __init__(self):
self.id=-1
self.name=

def doSomething(self):
print animal...

def toString(self):
print id={0},Name={1}.format(self.id,self.name)

class Cat(Animal):
def __init__(self):
#super(Animal,self).__init__()
Animal.__init__(self)

def doSomething(self):
print this is {0}....format(self.name)

print hello
if __name__==__main__:
a=Animal()
print a.id,a.name#filename:animalset.py
__metaclass__=type
from animal import Animal,Cat
class AnimalSet():
def __init__(self):
a0=Animal()
a0.id,a0.name=1,unknown
a1=Cat()
a1.id,a1.name=2,Tom
a2=Cat()
a2.id,a2.name=3,Paul
self.arr=[a0,a1,a2]

def set(self):
return self.arr

def add(self,animal):
self.arr.append(animal)

def find(self,index):
for i,value in enumerate(self.arr):
if i==index:
return value

generally,we can invoke ironpython class and its members using the .net library ironpyton.dll,
here is my sample: ScriptEngine engine = Python.CreateEngine();
string ironpath = @"D:ironpythondemoipylib";
engine.SetSearchPaths(new string[] { ironpath });

ScriptSource source = engine.CreateScriptSourceFromFile(Path.Combine(ironpath, "animset.py"));
ScriptScope scope = engine.CreateScope();
ObjectOperations ops = engine.CreateOperations();
source.Execute(scope);
dynamic animalSet = scope.GetVariable("AnimalSet");
dynamic animal = animalSet().find(0);
Console.WriteLine("id:{0}", animal.id);
Console.WriteLine("name:{0}", animal.name);

Console.ReadKey();


it is likely to invoke ironpython members using ObjectOperations and dlr(dynamic keywords), but i want to know more about ironpython class members such as how to get python method parameters.
we can use .net reflection to get parameters from .net class easily: var cls = typeof(System.IO.FileStream);
var method = cls.GetMethod("Read");
ParameterInfo[] parameters = method.GetParameters();
So, how can i get python method paramters using .net?
for example,in the file “animalset.py” ,the “AnimalSet“ class has the method ”find“,then how to get parameters from method find?

View the full article
 
Back
Top