python clr createinstance_在C中实例化python类#

Ironpython类是

NET类。它们是Ironpython.runtime.types.pythontype的实例,后者是python元类。这是因为Python类是动态的,并且支持在运行时添加和删除方法,而这是您不能用.NET类做的。

要在C中使用python类,您需要使用objectOperations类。这个类允许您在语言本身的语义中对Python类型和实例进行操作。例如,它在适当的时候使用魔术方法,自动将整数提升为长整数等。您可以通过查看源代码或使用Reflector了解更多关于对象操作的信息。

下面是一个例子。calculator.py包含一个简单类:

class Calculator(object):

def add(self, a, b):

return a + b

您可以从.NET 4.0之前的代码中使用它,如下所示:

ScriptEngine engine = Python.CreateEngine();

ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");

ScriptScope scope = engine.CreateScope();

ObjectOperations op = engine.Operations;

source.Execute(scope); // class object created

object klaz = scope.GetVariable("Calculator"); // get the class object

object instance = op.Call(klaz); // create the instance

object method = op.GetMember(instance, "add"); // get a method

int result = (int)op.Call(method, 4, 5); // call method and get result (9)

您需要引用程序集ironpython.dll、microsoft.scripting和microsoft.scripting.core。

C 4使用

新的

动态类型。

ScriptEngine engine = Python.CreateEngine();

ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");

ScriptScope scope = engine.CreateScope();

source.Execute(scope);

dynamic Calculator = scope.GetVariable("Calculator");

dynamic calc = Calculator();

int result = calc.add(4, 5);

如果您将Visual Studio 2010或更高版本与Nuget支持结合使用,只需执行此操作即可下载并引用相应的库。

Install-Package IronPython

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值