【问题标题】:Python/IronPython- how to return value of specific attribute of class when only class object referenced?Python / IronPython-仅引用类对象时如何返回类的特定属性的值?
【发布时间】: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 是默认属性集和/或引用,它是常用属性的旧名称的大小。

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

有什么想法吗?

【问题讨论】:

    标签: python class attributes default ironpython


    【解决方案1】:

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

    【讨论】:

    • 谢谢。是的,一旦给了 IP,我所做的就是访问列表中每个项目的属性,对它们进行一些计算并将结果插入 CurrentAmount 属性。
    猜你喜欢
    • 2022-01-01
    • 2022-11-02
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多