Python / IronPython-仅引用类对象时如何返回类的特定属性的值?

Posted

技术标签:

【中文标题】Python / IronPython-仅引用类对象时如何返回类的特定属性的值?【英文标题】:Python/IronPython- how to return value of specific attribute of class when only class object referenced? 【发布时间】:2013-05-13 02:00:51 【问题描述】:

好的,我只是想进入 Python,具体来说,我正在使用调用 IronPython 引擎的 C# 应用程序中的即时计算的好处。我将 C 类的 C# 对象列表传递给 IP,然后进行大量计算。对类的某个成员有一个遗留 (SQL) 引用,称为 CURRENTAMOUNT。计算中还会引用其他属性值,但我想知道是否有一种方法可以在仅引用对象的情况下自动返回 CURRENTAMOUNT 的值。

C# 类 MyNumbersClass

public class MyNumbersClass

   decimal SomeVal_A;
   decimal SomeVal_B;
   decimal CurrentAmount;

...收集一个名为 NumbersList...的列表...

... 实例化 IronPython 引擎 E ... 设置范围 S ... 将 IP 列表 PNumbers 设置为 C# 列表 NumbersList

S.SetVariable(PNumbers, NumbersList)

所以现在,IronPython(IP) 中的一个简单计算是计算以下内容:

PNumbers[10].CurrentAmount = PNumbers[0].SomeVal_A * (PNumbers[2].SomeVal_B / DaysInWeek) - PNumbers[5].CurrentAmount

我怎样才能重新编写它,以便 CurrentAmount 是在未指定时设置和获取的默认属性? 即,PNumbers[10] = PNumbers[0].SomeVal_A * (PNumbers[2].SomeVal_B / DaysInWeek) - PNumbers[5]

我对示例进行了过度简化,因为我只能说传入的 C# 类的现有遗留属性非常长且冗长,并且 CurrentAmount 是默认属性集和/或引用,它是常用属性的旧名称的大小。

当我键入此内容时,我意识到我所询问的内容可能会产生意想不到的后果 - 即,当我真的只想引用整个类的对象时。

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您一直在处理项目列表,您可以在 C# 中创建一个类来包装列表并实现 __getitem____setitem__(基本上是重载 [] 运算符)以引用 CurrentAmmount。您将无法从 Python 中完全替换该列表中的元素,但这对您而言可能无关紧要。

【讨论】:

谢谢。是的,一旦给了 IP,我所做的就是访问列表中每个项目的属性,对它们进行一些计算并将结果插入 CurrentAmount 属性。

以上是关于Python / IronPython-仅引用类对象时如何返回类的特定属性的值?的主要内容,如果未能解决你的问题,请参考以下文章

C#中调用python

如何在 IronPython 2.7 中引用针对运行时版本“v2.0.xxx”构建的程序集?

初步了解IronPython

安装ironpython

C# 如何调用Python文件

Python学习-环境搭建(IronPython)