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-仅引用类对象时如何返回类的特定属性的值?的主要内容,如果未能解决你的问题,请参考以下文章