CN106919370A - 一种对象属性值的获取方法及装置 - Google Patents

一种对象属性值的获取方法及装置 Download PDF

Info

Publication number
CN106919370A
CN106919370A CN201510992704.6A CN201510992704A CN106919370A CN 106919370 A CN106919370 A CN 106919370A CN 201510992704 A CN201510992704 A CN 201510992704A CN 106919370 A CN106919370 A CN 106919370A
Authority
CN
China
Prior art keywords
variable
value
properties
name
object properties
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510992704.6A
Other languages
English (en)
Other versions
CN106919370B (zh
Inventor
程水强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201510992704.6A priority Critical patent/CN106919370B/zh
Publication of CN106919370A publication Critical patent/CN106919370A/zh
Application granted granted Critical
Publication of CN106919370B publication Critical patent/CN106919370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种对象属性值的获取方法及装置,涉及计算机技术领域,主要目的在于实现获取具有多层级对象属性结构的对象中任意层级的对象属性的值。本发明主要的技术方案为:解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称;根据该对象以及各级对象属性的变量名称生成层级数组;利用取值接口函数获取所述对象的值,该取值接口函数为获取所述层级数组中第一个对象中变量的值的函数;根据该对象的值和各级对象属性的变量名称,按照层级数组中的层级数从低到高的顺序迭代计算该对象第n级对象属性的属性值。本发明主要用于获取对象各层级的属性值。

Description

一种对象属性值的获取方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种对象属性值的获取方法及装置。
背景技术
Python语言是一种面向对象的编程语言,得到了IT界广泛的应用,IronPython是Python语言在.NET下的一种实现,有了IronPython,.NET开发人员可以开发出如下的软件,该软件的用户编写的解决实际业务问题的Python代码,可以在使用.NET技术开发的软件中运行,这是IronPython非常强大的特性。除此之外,在IronPython中,用户编写的Python代码可以和使用.NET技术开发的软件直接交互,Python语言的简便性和.NET技术的优势得到了完美的结合。
但是,在IronPython中运行Python代码的过程中会遇到Python对象属性值无法在.NET中直接获取的问题,为解决获取Python对象属性值的问题,现有技术中IronPython提供了接口函数GetVariable(string name),该接口函数帮助开发人员获取Python语言中名为name的变量值,但是GetVariabe(stringname)仅限于基本类型变量以及对象,至于Python对象的属性值则无法直接获取。而很多时候,开发人员想要获取类似对象A的属性B的值“A.B”并且A、B的名称都是字符串变量的时候依靠IronPython提供的该接口函数,无法实现Python对象属性值的获取。
发明内容
有鉴于此,本发明提供一种对象属性值的获取方法及装置,主要目的在于实现获取具有多层级对象属性结构的对象中任意层级的对象属性的值。
为达到上述目的,本发明主要提供如下技术方案:
一方面,本发明提供了一种对象属性值的获取方法,该方法包括:
解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;
根据所述对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;
利用取值接口函数获取所述对象的值,所述取值接口函数为获取所述层级数组中第一个对象中变量的值的函数;
根据所述对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
另一方面,本发明还提供了一种对象属性值的获取装置,该装置包括:
解析单元,用于解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;
生成单元,用于根据所述解析单元得到的对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;
获取单元,用于利用取值接口函数获取所述解析单元得到的对象的值,所述取值接口函数为获取所述生成单元生成的层级数组中第一个对象中变量的值的函数;
计算单元,用于根据所述获取单元获取的对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
依据上述本发明所提出的对象属性值的获取方法及装置,通过解析具有多层级对象属性结构且最内层对象属性的变量为基本类型变量的对象,得到该对象中各层级的对象属性的变量名称,并按照该对象的层级数对应地生成一个数组,由取值接口函数获取该数组中所存储的首个对象的对象属性值,再利用所得到的对象属性值和第一层级的对象属性的变量名称计算第一层级的对象属性值,由第一层级的对象属性值和第二层级的对象属性的变量名称计算第二层级的对象属性值,以此类推进行迭代计算直至得到所有的对象层级中的对象属性值,再获取所需层级的对象属性值。相对于现有的只能获取对象中的变量为基本类型变量的属性值方式,本发明实现了以迭代计算的方式逐层计算各个层级中的对象属性值,以此来选择需要获取的层级对象的属性值。从而帮助软件开发人员能够快速地获取对象任意层级的属性值。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提出的一种对象属性值的获取方法的流程图;
图2示出了本发明实施例提出的另一种对象属性值的获取方法的流程图;
图3示出了本发明实施例提出的一种对象属性值的获取装置的组成框图;
图4示出了本发明实施例提出的另一种对象属性值的获取装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种对象属性值的获取的方法,如图1所示,该方法应用于软件开发程序中,通过本方法能够快速获取具有多层级对象属性结构的对象的属性值,具体步骤包括:
101、解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称。
对象中的变量类型一般分为基本类型和对象类型,其中,基本类型变量的值可以是一个数字、一个字符或者是一个布尔值;而对象类型变量的值则是指向内存空间的引用,也就是地址,所指向的内存中保存着变量所表示的一个值或一组值。在本发明实施例中,所指的对象是对象中的变量为对象类型变量,而该变量所指向的对象还具有对象类型变量,直至最终指向的是一个基本类型变量的对象。总结这种对象的特点就是该对象具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象。例如,对象A有个属性B,属性B也是个对象且还有个属性C,而C是整型变量。其中,B是A的第一层对象属性;C是B的第一层对象属性,是对A的第二层对象属性。而对象A就是本发明实施例所要处理的对象,是具有两层对象属性结构的对象。
将对象进行逐层的解析,得到对象以及各级对象属性的变量名称。对应上述的例子,就是将对象A进行解析,得到对象名称“A”和各级对象属性名称“B”和“C”。而对于具有n级的对象,可以解析出n+1个名称,且n的值为大于等于1的正整数。
102、根据对象以及各级对象属性的变量名称生成层级数组。
本步骤主要是对101所解析的结果加以整理,是将解析得到的对象的名称以及各级对象属性的变量名称按照解析出来的顺序进行保存,生成一个具有顺序的层级数组。该数组中的每一个元素对应一个对象或对象属性的名称。对于具有n级对象属性结构的对象,所生成的层级数组中具有n+1个元素。
103、利用取值接口函数获取对象的值。
取值接口函数为获取层级数组中第一个对象中变量的值的函数,即对象A的属性值,而“A”在层级数组的层级数最低。该函数在获取对象的值时,对于变量的类型没有限制,可以是基本类型,也可以是对象类型。
104、根据对象的值和各级对象属性的变量名称,按照层级数组中的层级数从低到高的顺序迭代计算该对象第n级对象属性的属性值。
迭代计算就是在103的基础上,利用第一层级对象的属性值以及第二层级中的变量名称计算第二层级对象属性的属性值,以此类推,就可以计算出第n级级对象属性的属性值,而由于第n级的变量为基本类型的变量,由此便可以得出第n级的基本类型的属性值。再通过反向推导便可以得到全部层级对象属性的属性值。进一步的,就可以根据需要来提取不同层级的对象属性值。
结合上述的实现方式可以看出,本发明实施例所采用的对象属性值的获取方法,通过解析具有多层级对象属性结构且最内层对象属性的变量为基本类型变量的对象,得到该对象中各层级的对象属性的变量名称,并按照该对象的层级数对应地生成一个数组,由取值接口函数获取该数组中所存储的首个对象的对象属性值,再利用所得到的对象属性值和第一层级的对象属性的变量名称计算第一层级的对象属性值,由第一层级的对象属性值和第二层级的对象属性的变量名称计算第二层级的对象属性值,以此类推进行迭代计算直至得到所有的对象层级中的对象属性值,再获取所需层级的对象属性值。相对于现有的只能获取对象中的变量为基本类型变量的属性值方式,本发明实现了以迭代计算的方式逐层计算各个层级中的对象属性值,以此来选择需要获取的层级对象的属性值。从而帮助软件开发人员能够快速地获取对象任意层级的属性值。
为了更加详细地说明本发明提出的一种对象属性值的获取方法,本发明实施例将通过在IronPython语言中的具体应用进行举例说明,如图2所示,该方法具体的步骤包括:
201、解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称。
本步骤的内容与上述101相同,具体可参见上述的内容,此处不再赘述。对于解析提取变量名称的方式,本发明实施例不做具体限定。
202、根据对象以及各级对象属性的变量名称生成层级数组。
在完成对象的解析并提取出各层中的变量名称后,将所有的变量名称按照层级的顺序由低到高进行排序,或者是根据解析的顺序进行排序(一般的解析顺序也是按照层级由低到高排序的),例如,步骤101中所举的对象A的例子,B是A的第一层属性,C是A的第二层属性,是B的第一层属性,其中,A、B为对象型变量,C为基本型变量。则对象A为具有2层对象属性结构的对象,解析对象A后,得到的变量名称为“A”、“B”、“C”,根据层级的排序,A为0层,B为1层,C为2层。按照由低到高的顺序将变量名称保存至数组中,得到具有层级顺序的层级数组,如{A,B,C}。
在本发明实施例中,为了便于在IronPython语言中使用该语言所提供的接口函数GetVariable(name)获取对象的属性值,需要将层级数组的名称保存为names,在该数组的元素中,names[0]为A,names[1]为B,names[2]为C,且该数组为字符串数组,即元素A,B,C的类型可以为字符串。
203、利用接口函数GetVariable(name)获取对象中变量的值。
IronPython提供了一个接口函数GetVariable(name)可以获取Python语言中名称为name的变量的值,该变量的类型可以是基本类型也可以是对象类型。据此,本发明实施例通过调用接口函数GetVariable(name)获取层级数组中所保存的变量的值。需要说明的是,在提取层级数组中的变量时,是根据层级数组中由低到高的顺序进行提取的,即先提取names[0]对应的变量A,获取A的值。
204、根据对象的值和第一层级对象属性的变量名称计算第一层级的对象属性值,并判断迭代计算的次数是否大于n。
在得到对象A的属性值后,利用该属性值以及从层级数组中提取的对象A的下一层级对象属性B的变量名称,计算对象属性B的属性值,以此类推,直至计算出层级数组中最后一级的变量的属性值后,完成对该对象A的属性值获取计算。
为了能够实现上述的自动迭代计算的过程,具体的方式可以是预先设置一个整型变量i,i≥1的正整数,且i的初始化值为1,i的取值范围取决于层级数组中的元素数量,由于对象A的值已经通过接口函数GetVariable(name)所获取,因此再进行计算时,i的取值为元素数量减1,即进行迭代计算的次数,为[1,n]。在每次计算对象属性的属性值后,都判断变量i的值是否大于n,若大于,说明层级数组中的元素已被提取完,可以结束迭代计算的过程。而当值小于等于n时,则需要继续计算,并为变量i的值加1。
205、若不大于n,则继续迭代计算下一层对象属性的属性值。
在此对于一次迭代计算的具体过程利用上述的例子加以详细说明,对于对象A的属性值由接口函数GetVariable(name)获取,根据所获取的值以及对象A的第一层对象属性的变量B开始迭代计算,先计算B的属性值,具体做法为:获取变量i的值,此时i=1,其取值范围为[1,2],判断i的值是否大于2,不大于则调用C#接口函数obj.GetType()获取对象或对象属性obj的类型,即获取对象属性B的类型,其为对象型,并具有属性C;再调用C#接口函数type.GetProperty(names[i])获取对象或对象属性的第i级属性描述pi,即根据B的类型获取对象属性B的第一级的属性描述p1;根据属性描述p1调用C#接口函数pi.GetValue(obj,null)获取对象或对象属性的第i级属性值temp,即根据属性描述获取对象属性B的第一级属性值temp;最后将所得到的属性值temp赋值到对象属性B中,同时给变量i的值加1。再判断i的值是否大于2,若不大于,则重复上述的步骤,计算对象属性C的属性值。直至变量i的值大于2时,结束此次的迭代计算过程。
经过迭代计算所获取到的第n级的对象属性的属性值,由于该对象属性中的变量为基本型变量,因此,可以得出具有基本型数值的属性值。再根据逆向推导就可以得到所有层级中变量的基本型数值的属性值。根据需要获取的对象的属性值,在完成计算的结果中,通过层级的数值或者变量的名称就可以查找到对应的对象属性值。
进一步的,作为对上述方法的实现,本发明实施例提供了一种对象属性值的获取装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置设置在具有操作系统的可编程设备中,用于软件产品的开发,如图3所示,该装置包括:
解析单元31,用于解析具有n级对象属性结构的对象,且第n级对象属性的变量为基本类型变量,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;
生成单元32,用于根据所述解析单元31得到的对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;
获取单元33,用于利用取值接口函数获取所述解析单元31得到的对象的值,所述取值接口函数为获取所述生成单元32生成的层级数组中第一个对象中变量的值的函数;
计算单元34,用于根据所述获取单元33获取的对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
进一步的,如图4所示,所述生成单元32包括:
排序模块321,按照解析的顺序对所述对象以及各级对象属性的变量名称进行由低到高的层级排序;
保存模块322,用于根据所述排序模块321的层级排序将所述对象以及各级对象属性的变量名称依次保存到Python语言中的字符串数组names中。
进一步的,如图4所示,所述获取单元33包括:
调用模块331,用于调用IronPython中的接口函数GetVariable(name),所述接口函数用于获取Python语言中名称为name的变量的值;
提取模块332,用于根据层级数组中的排序顺序提取所述层级数组中的变量名称;
获取模块333,用于利用调用模块331调用的接口函数GetVariable(name)获取所述提取模块332所确定的变量名称所对应对象中变量的值。
进一步的,如图4所示,所述计算单元34包括:
判断模块341,用于判断判断迭代计算的次数是否大于n;
计算模块342,用于当所述判断模块判断迭代计算的次数不大于n时,继续迭代计算下一层对象属性的属性值。
进一步的,如图4所示,所述计算模块342包括:
调用获取子模块3421,用于调用C#接口函数obj.GetType()获取对象或对象属性的类型;
所述调用获取子模块3421还用于,根据所述对象或对象属性的类型调用C#接口函数type.GetProperty(names[i])获取所述对象或对象属性的第i级属性描述pi;
所述调用获取子模块3421还用于,根据所述属性描述pi调用C#接口函数pi.GetValue(obj,null)获取所述对象或对象属性的第i级属性值temp;
修改子模块3422,用于在将属性值temp赋值到所述对象或对象属性中时,为变量i的值加1,所述变量i为所述迭代计算的次数,i为大于等于1的正整数。
综上所述,本发明实施例所采用的对象属性值的获取方法及装置,通过解析具有多层级对象属性结构且最内层对象属性的变量为基本类型变量的对象,得到该对象中各层级的对象属性的变量名称,并按照该对象的层级数对应地生成一个数组,由取值接口函数获取该数组中所存储的首个对象的对象属性值,特别是在使用IronPython语言所开发的软件中,通过接口函数GetVariable(name)获取对象属性值,再利用所得到的对象属性值和第一层级的对象属性的变量名称计算第一层级的对象属性值,由第一层级的对象属性值和第二层级的对象属性的变量名称计算第二层级的对象属性值,以此类推进行迭代计算直至得到所有的对象层级中的对象属性值,再获取所需层级的对象属性值。相对于现有的只能获取对象中的变量为基本类型变量的属性值方式,本发明实现了以迭代计算的方式逐层计算各个层级中的对象属性值,以此来选择需要获取的层级对象的属性值。从而帮助软件开发人员,特别是使用IronPython语言开发软件的人员快速获取对象任意层级的属性值。
所述对象属性值的获取装置包括处理器和存储器,上述解析单元、生成单元、获取单元和计算单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现简化对象属性值的获取器的播放,特别是针对在对象属性值的获取意外中断时的视频续播功能。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;根据所述对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;利用取值接口函数获取所述对象的值,所述取值接口函数为获取所述层级数组中第一个对象中变量的值的函数;根据所述对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口函数、网络接口函数和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种对象属性值的获取方法,其特征在于,所述方法包括:
解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;
根据所述对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;
利用取值接口函数获取所述对象的值,所述取值接口函数为获取所述层级数组中第一个对象中变量的值的函数;
根据所述对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
2.根据权利要求1所述的方法,其特征在于,根据所述对象以及各级对象属性的变量名称生成层级数组包括:
按照解析的顺序对所述对象以及各级对象属性的变量名称进行由低到高的层级排序;
根据所述层级排序将所述对象以及各级对象属性的变量名称依次保存到Python语言中的字符串数组names中。
3.根据权利要求1或2所述的方法,其特征在于,利用取值接口函数获取所述对象的值包括:
调用IronPython中的接口函数GetVariable(name),所述接口函数用于获取Python语言中名称为name的变量的值;
根据层级数组中的排序顺序提取所述层级数组中的变量名称;
利用所述接口函数GetVariable(name)获取所述变量名称所对应对象中变量的值。
4.根据权利要求3所述的方法,其特征在于,根据所述对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值包括:
判断迭代计算的次数是否大于n;
若否,则继续迭代计算下一层对象属性的属性值。
5.根据权利要求4所述的方法,其特征在于,所述继续迭代计算下一层对象属性的属性值包括:
调用C#接口函数obj.GetType()获取对象或对象属性的类型;
根据所述类型调用C#接口函数type.GetProperty(names[i])获取所述对象或对象属性的第i级属性描述pi;
根据所述属性描述pi调用C#接口函数pi.GetValue(obj,null)获取所述对象或对象属性的第i级属性值temp;
在将属性值temp赋值到所述对象或对象属性中时,为变量i的值加1,所述变量i为所述迭代计算的次数,i为大于等于1的正整数。
6.一种对象属性值的获取装置,其特征在于,所述装置包括:
解析单元,用于解析具有n级对象属性结构且第n级对象属性的变量为基本类型变量的对象,得到对象以及各级对象属性的变量名称,其中,n为大于等于1的正整数;
生成单元,用于根据所述解析单元得到的对象以及各级对象属性的变量名称生成层级数组,所述层级数组为按照所述对象的层级结构依次保存有所述对象以及各级对象属性的变量名称的数组;
获取单元,用于利用取值接口函数获取所述解析单元得到的对象的值,所述取值接口函数为获取所述生成单元生成的层级数组中第一个对象中变量的值的函数;
计算单元,用于根据所述获取单元获取的对象的值和所述各级对象属性的变量名称,按照所述层级数组中的层级数从低到高的顺序迭代计算所述对象第n级对象属性的属性值。
7.根据权利要求6所述的装置,其特征在于,所述生成单元包括:
排序模块,按照解析的顺序对所述对象以及各级对象属性的变量名称进行由低到高的层级排序;
保存模块,用于根据所述排序模块的层级排序将所述对象以及各级对象属性的变量名称依次保存到Python语言中的字符串数组names中。
8.根据权利要求6或7所述的装置,其特征在于,所述获取单元包括:
调用模块,用于调用IronPython中的接口函数GetVariable(name),所述接口函数用于获取Python语言中名称为name的变量的值;
确定模块,用于根据层级数组中的排序顺序提取所述层级数组中的变量名称;
获取模块,用于利用所述调用模块调用的接口函数GetVariable(name)获取所述确定模块确定的变量名称所对应对象中变量的值。
9.根据权利要求8所述的装置,其特征在于,所述计算单元包括:
判断模块,用于判断迭代计算的次数是否大于n;
计算模块,用于当所述判断模块判断迭代计算的次数不大于n时,继续迭代计算下一层对象属性的属性值。
10.根据权利要求9所述的装置,其特征在于,所述计算模块包括:
调用获取子模块,用于调用C#接口函数obj.GetType()获取对象或对象属性的类型;
所述调用获取子模块还用于,根据所述对象或对象属性的类型调用C#接口函数type.GetProperty(names[i])获取所述对象或对象属性的第i级属性描述pi;
所述调用获取子模块还用于,根据所述属性描述pi调用C#接口函数pi.GetValue(obj,null)获取所述对象或对象属性的第i级属性值temp;
修改子模块,用于在将属性值temp赋值到所述对象或对象属性中时,为变量i的值加1,所述变量i为所述迭代计算的次数,i为大于等于1的正整数。
CN201510992704.6A 2015-12-24 2015-12-24 一种对象属性值的获取方法及装置 Active CN106919370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510992704.6A CN106919370B (zh) 2015-12-24 2015-12-24 一种对象属性值的获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510992704.6A CN106919370B (zh) 2015-12-24 2015-12-24 一种对象属性值的获取方法及装置

Publications (2)

Publication Number Publication Date
CN106919370A true CN106919370A (zh) 2017-07-04
CN106919370B CN106919370B (zh) 2020-04-17

Family

ID=59459760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510992704.6A Active CN106919370B (zh) 2015-12-24 2015-12-24 一种对象属性值的获取方法及装置

Country Status (1)

Country Link
CN (1) CN106919370B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628635A (zh) * 2018-05-07 2018-10-09 广州视源电子科技股份有限公司 获取参数名和局部变量名的方法、装置、设备及存储介质
CN109725955A (zh) * 2018-12-30 2019-05-07 北京城市网邻信息技术有限公司 一种访问对象属性方法、装置、设备及存储介质
CN110032500A (zh) * 2019-03-01 2019-07-19 阿里巴巴集团控股有限公司 多层嵌套数据解析方法和设备
CN110471656A (zh) * 2018-05-10 2019-11-19 北京京东尚科信息技术有限公司 组件层级的调整方法和装置
CN110908647A (zh) * 2019-11-29 2020-03-24 苏州精易会信息技术有限公司 一种积木式编程的对象变量呈现方法、装置、终端及存储介质
CN111553435A (zh) * 2020-04-30 2020-08-18 上海明略人工智能(集团)有限公司 目标对象等级确定方法、装置、存储介质及电子装置
CN112306462A (zh) * 2019-08-02 2021-02-02 苏州精易会信息技术有限公司 一种积木式对象变量块构建方法、装置、存储介质和处理器
CN113254023A (zh) * 2021-05-14 2021-08-13 网易(杭州)网络有限公司 对象读取方法、装置和电子设备
CN113326031A (zh) * 2021-05-28 2021-08-31 网易(杭州)网络有限公司 属性获取方法和装置
WO2023093761A1 (zh) * 2021-11-29 2023-06-01 华为云计算技术有限公司 处理数据的方法和相关装置
CN117216147A (zh) * 2023-11-08 2023-12-12 中国电子科技集团公司第十五研究所 一种根据数据属性进行数据分层控制存储的方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081361A (zh) * 2012-02-03 2014-10-01 苹果公司 动态编程语言的基于跟踪器的运行时优化

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081361A (zh) * 2012-02-03 2014-10-01 苹果公司 动态编程语言的基于跟踪器的运行时优化

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ADMIN_CSQ: "异步编程设计模式--IronPythonDebugger", 《HTTPS://WWW.CNBLOGS.COM/CHENGSHUIQIANG/P/4479071.HTML》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628635A (zh) * 2018-05-07 2018-10-09 广州视源电子科技股份有限公司 获取参数名和局部变量名的方法、装置、设备及存储介质
CN108628635B (zh) * 2018-05-07 2021-12-14 广州视源电子科技股份有限公司 获取参数名和局部变量名的方法、装置、设备及存储介质
CN110471656A (zh) * 2018-05-10 2019-11-19 北京京东尚科信息技术有限公司 组件层级的调整方法和装置
CN109725955A (zh) * 2018-12-30 2019-05-07 北京城市网邻信息技术有限公司 一种访问对象属性方法、装置、设备及存储介质
CN110032500A (zh) * 2019-03-01 2019-07-19 阿里巴巴集团控股有限公司 多层嵌套数据解析方法和设备
CN110032500B (zh) * 2019-03-01 2023-06-09 创新先进技术有限公司 多层嵌套数据解析方法和设备
CN112306462A (zh) * 2019-08-02 2021-02-02 苏州精易会信息技术有限公司 一种积木式对象变量块构建方法、装置、存储介质和处理器
CN112306462B (zh) * 2019-08-02 2024-04-23 苏州精易会信息技术有限公司 一种积木式对象变量块构建方法、装置、存储介质和处理器
CN110908647A (zh) * 2019-11-29 2020-03-24 苏州精易会信息技术有限公司 一种积木式编程的对象变量呈现方法、装置、终端及存储介质
CN110908647B (zh) * 2019-11-29 2023-10-27 苏州精易会信息技术有限公司 一种积木式编程的对象变量呈现方法、装置、终端及存储介质
CN111553435A (zh) * 2020-04-30 2020-08-18 上海明略人工智能(集团)有限公司 目标对象等级确定方法、装置、存储介质及电子装置
CN111553435B (zh) * 2020-04-30 2024-04-09 上海明略人工智能(集团)有限公司 目标对象等级确定方法、装置、存储介质及电子装置
CN113254023B (zh) * 2021-05-14 2023-08-11 网易(杭州)网络有限公司 对象读取方法、装置和电子设备
CN113254023A (zh) * 2021-05-14 2021-08-13 网易(杭州)网络有限公司 对象读取方法、装置和电子设备
CN113326031B (zh) * 2021-05-28 2023-08-22 网易(杭州)网络有限公司 属性获取方法和装置
CN113326031A (zh) * 2021-05-28 2021-08-31 网易(杭州)网络有限公司 属性获取方法和装置
WO2023093761A1 (zh) * 2021-11-29 2023-06-01 华为云计算技术有限公司 处理数据的方法和相关装置
CN117216147A (zh) * 2023-11-08 2023-12-12 中国电子科技集团公司第十五研究所 一种根据数据属性进行数据分层控制存储的方法及装置
CN117216147B (zh) * 2023-11-08 2024-01-19 中国电子科技集团公司第十五研究所 一种根据数据属性进行数据分层控制存储的方法及装置

Also Published As

Publication number Publication date
CN106919370B (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN106919370A (zh) 一种对象属性值的获取方法及装置
US20230185827A1 (en) System and method for enabling multiple parents with weights in a multidimensional database environment
CN107957957A (zh) 测试用例的获取方法和装置
CN107908672A (zh) 基于Hadoop平台的应用报表实现方法、设备及存储介质
CN103092906B (zh) 用于扩展节点的多客户通用保持
US20200134081A1 (en) Database systems and applications for assigning records to chunks of a partition in a non-relational database system with auto-balancing
CN107203774A (zh) 对数据的归属类别进行预测的方法及装置
CN106598999A (zh) 一种计算文本主题归属度的方法及装置
CN107038059A (zh) 虚拟机部署方法及装置
CN106933823A (zh) 数据同步方法及装置
CN106815100A (zh) 接口测试方法及装置
CN106897342A (zh) 一种数据校验方法和设备
CN102135936A (zh) 生成测试用例的方法以及系统
CN105446952B (zh) 用于处理语义片段的方法和系统
CN111882426A (zh) 业务风险分类器训练方法、装置、设备及存储介质
CN106844288A (zh) 一种随机字符串生成方法及装置
CN107832446A (zh) 一种配置项信息的搜索方法及计算设备
CN107133248A (zh) 一种应用程序的分类方法和装置
US20200151582A1 (en) Ascriptive and descriptive entities for process and translation: a limited iterative ontological notation
CN109165102B (zh) 一种基于智能合约的约束求解器分布式调度方法
CN108182531A (zh) 页岩气开发评价方法、装置及终端设备
CN112989182B (zh) 信息处理方法、装置、信息处理设备及存储介质
CN114220504A (zh) 一种随机分组方法、装置及设备
CN108241620A (zh) 查询脚本的生成方法及装置
Wagner Introduction to simulation using JavaScript

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Applicant after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing

Applicant before: Beijing Guoshuang Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant