Python UiPath-如何在UiPath.Python.Activities中使用类

时间:2019-04-29 14:09:03

标签: python uipath

这是显示Python作用域活动(版本3.6和目标x64)的图像:

Python作用域

主要问题是两个调用python方法之间的关系,第一个用于启动类对象,第二个用于访问该类的方法。这是第一个调用python属性的图像:

调用Python初始化方法

和getNumberPlusOne活动调用:

调用Python getNumberPlusOne方法

正在执行的python代码:

class ExampleClass:
    def __init__(self,t,n):
        self.text = t
        self.number = n

    def getNumberPlusOne(self):
        return (self.number+1)

最后,执行第二个Invoke Python方法时出错:

  

一个ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为:   System.InvalidOperationException:调用Python方法时出错----> System.Runtime.Serialization.InvalidDataContractException:类型'UiPath.Python.PythonObject'无法序列化。考虑使用DataContractAttribute属性标记它,并使用DataMemberAttribute属性标记要序列化的所有成员。如果类型是集合,请考虑使用CollectionDataContractAttribute对其进行标记。有关其他受支持的类型,请参见Microsoft .NET Framework文档。

关于错误在哪里以及如何与init方法中创建的输出对象进行交互的任何想法?

1 个答案:

答案 0 :(得分:0)

我相信,此活动的设计初衷是考虑到简单的脚本,而不是针对整个类。 Here's在其社区论坛上的一篇文章中,用户Sergiu.Wittenberger进入了更多详细信息。

让我们从“加载Python脚本”活动开始: invoke python script

在我的情况下,局部变量“ pyScript”是指向python对象的指针,即ExampleClass的实例。

现在,有一个“调用Python方法”活动-此活动使我们可以按名称调用方法。但是,似乎类上的方法是UiPath无法访问的-您不能只键入pyScript.MethodName()invoke python method

因此,似乎我们无法访问类方法(请在这里证明我错了!),但是Sergio显示了一种解决方法。在您的情况下,您可以在类外添加另一个方法以访问或操作对象:

class ExampleClass:
    def __init__(self,t,n):
        self.text = t
        self.number = n

    def getNumberPlusOne(self):
        return (self.number+1)


foo = ExampleClass("bar", 42)

def get_number_plus_one():
    return foo.getNumberPlusOne()

请注意,这也意味着该对象在同一文件foo中实例化。在这一点上,这似乎是与对象进行交互的唯一选择-再次,我希望有人能证明我做错了。

为完整起见,结果如下: enter image description here