CN116860360A - 一种基于python的控制反转实现方法和装置 - Google Patents
一种基于python的控制反转实现方法和装置 Download PDFInfo
- Publication number
- CN116860360A CN116860360A CN202310738161.XA CN202310738161A CN116860360A CN 116860360 A CN116860360 A CN 116860360A CN 202310738161 A CN202310738161 A CN 202310738161A CN 116860360 A CN116860360 A CN 116860360A
- Authority
- CN
- China
- Prior art keywords
- function
- class
- called
- parameter
- called function
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000006870 function Effects 0.000 claims abstract description 325
- 238000004458 analytical method Methods 0.000 claims abstract description 23
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012905 input function Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 14
- 238000012545 processing Methods 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000004891 communication Methods 0.000 description 10
- 230000006978 adaptation Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提出的基于python的控制反转实现方法、装置及电子设备中,涉及数据处理、金融科技、信息技术产业技术领域,该方法包括:在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
Description
技术领域
本公开涉及数据处理、金融科技、信息技术产业技术领域,尤其涉及一种基于python的控制反转实现方法、装置和电子设备。
背景技术
控制反转(Inversion of Control,IOC)容器采用依赖注入(DependencyInjection,DI)的方式将对象的创建和对象的使用相分离,使得程序的整个体系结构变得非常灵活。
目前,Python语言中IOC的第三方实现库仍然存在不足,IOC/DI的实现主要采用文件配置的方式,具体需要在yml配置文件中定义需要添加进IOC容器中的类。当需要获取对象的时候,先构建一个IOC容器,并通过在配置文件中配置的编号去获取对应的对象,使得从容器中获取对象的过程比较繁琐,进而使得对该对象的调用也不方便。
发明内容
本公开提供一种基于python的控制反转实现方法、装置和电子设备,以至少解决相关技术中的获取对象的过程繁琐、调用对象不方便的技术问题。
根据本公开的第一方面,提供了一种基于python的控制反转实现方法,所述方法,包括:
在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;
在控制反转容器启动之后,响应于接收到函数的调用请求,确定所述控制反转容器中是否存在被调用函数,其中,所述调用请求中包括被调用函数;
响应于所述被调用函数存在,通过所述注册类对所述被调用函数进行参数解析,并利用解析后的参数值执行所述被调用函数。
根据本公开的第二方面,提供了一种基于python的控制反转实现装置,所述装置,包括:
扫描模块,用于在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;
确定模块,用于在控制反转容器启动之后,响应于接收到函数的调用请求,确定所述控制反转容器中是否存在被调用函数,其中,所述调用请求中包括被调用函数;
执行模块,用于响应于所述被调用函数存在,通过所述注册类对所述被调用函数进行参数解析,并利用解析后的参数值执行所述被调用函数。
根据本公开的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上述第一方面实施例的基于python的控制反转实现方法。
根据本公开的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由数据管理装置/电子设备/服务器的处理器执行时,使得数据管理装置/电子设备/服务器能够执行如上述第一方面实施例的基于python的控制反转实现方法。
根据本公开的第五方面,提供一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如上述第一方面实施例的基于python的控制反转实现方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开提出的基于python的控制反转实现方法、装置及电子设备中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为根据本公开一个实施例提供的基于python的控制反转实现方法的流程示意图;
图2为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图;
图3为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图;
图4为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图;
图5为根据本公开一个实施例提供的基于python的控制反转实现装置的结构示意图;
图6为根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
需要说明的是,本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
下面参考附图描述本公开实施例的基于python的控制反转实现方法及装置。
图1为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图,如图1所示,可以包括:
步骤101、在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中。
其中,在本公开实施例中,会对类和/或函数添加注解,以对注入对象进行声明。以及,本公开实施例中,在控制反转容器启动期间,自动发现类会对注解的类和/或函数进行扫描,并将存在注解标注的类和/或函数添加至注册类中,以完成类和/或函数的注入。示例的,在本公开实施例中,可以通过@为标记对类和/或函数进行注解。
以及,在本公开实施例中,通过上述步骤可以完成类和/或函数的注入,解决了相关技术中只能对类进行注入,无法满足函数的注入的问题,使得函数之间的调用得到解耦。
步骤102、在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数。
其中,在本公开实施例中,调用请求中包括被调用函数。以及,在控制反转容器启动之后,响应于接收到函数的调用请求后,可以从调用请求中获取被调用函数,并从注册类中确定控制反转容器中是否存在被调用函数。
具体地,在本公开实施例中,上述确定控制反转容器中是否存在被调用函数的方法可以包括以下步骤:
步骤1021、将被调用函数的函数名称与注册类中的函数名称进行比较;
步骤1022、若注册类中存在被调用函数的函数名称,则确定控制反转容器中存在被调用函数;
步骤1023、若注册类中不存在被调用函数的函数名称,则确定控制反转容器中不存在被调用函数。
其中,在本公开实施例中,若注册类中不存在被调用函数的函数名称,说明在注册类中没有该被调用函数,此时,无法在控制反转容器中直接调用该被调用函数。
以及,在本公开实施例中,确定控制反转容器中是否存在被调用函数,以便后续确定是否可以直接调用该被调用函数。
步骤103、响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。
其中,在本公开实施例中,若注册类中存在被调用函数的函数名称,说明该被调用函数已经被添加至注册类中,则可以直接调用该被调用函数。以及,在本公开实施例中,上述被调用函数中可能会存在参数,基于此,在确定被调用函数存在后,还需要通过注册类对被调用函数进行参数解析,并利用解析后的参数执行被调用函数。基于此,通过上述方法调用函数的过程中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。关于通过注册类对被调用函数进行参数解析的方法,这部分内容会在后续实施例中进行详细介绍,本公开实施例在此不做赘述。
本公开提出的基于python的控制反转实现方法中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
图2为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图,如图2所示,可以包括:
步骤201、在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中。
关于步骤201的详细介绍可以参考上述实施例中的相关介绍,本公开实施例在此不做赘述。
步骤202、确定添加至注册类中的函数是否为有参函数。
其中,在本公开实施例中,若上述添加至注册类中的函数对应参数中存在全局变量或默认值,说明该函数对应的参数有默认值或全局变量,在后续该函数被调用时可以不需要传入参数,则确定添加至注册类中的函数是有参函数;若上述添加至注册类中的函数不对应参数中不存在全局变量或默认值,则确定添加至注册类中的函数不是有参函数。
步骤203、若添加至注册类中的函数为有参函数,解析有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对的形式存入全局缓存中。
其中,在本公开实施例中,若添加至注册类中的函数为有参函数,解析有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对(例如,json键值对)的形式存入全局缓存中,使得函数注入时可选择传递任意参数,无需关注参数顺序,从而使得函数在后续被调用的过程更加便捷,方便应用的运行。
步骤204、在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数。
步骤205、响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。
关于步骤204~步骤205的详细介绍可以参考上述实施例中的相关介绍,本公开实施例在此不做赘述。
本公开提出的基于python的控制反转实现方法中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
图3为根据本公开另一个实施例提供的基于python的控制反转实现方法的流程示意图,如图3所示,可以包括:
步骤301、在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中。
步骤302、确定添加至注册类中的函数是否为有参函数。
步骤303、若添加至注册类中的函数为有参函数,解析有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对的形式存入全局缓存中。
步骤304、在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数。
关于步骤301~步骤304的详细介绍可以参考上述实施例中的相关介绍,本公开实施例在此不做赘述。
步骤305、响应于被调用函数存在,注册类确定被调用函数是否传入函数参数。
其中,在本公开实施例中,上述注册类确定调用请求中的被调用函数是否传入函数参数的方法可以包括:若被调用函数中传入了变量参数的值,则确定被调用函数传入函数参数;若被调用函数中未传入变量参数的值,则确定被调用函数未传入函数参数。
示例的,在本公开实施例中,假设被调用函数为exec(name,dict),若被调用函数为exec(name=“mm”,dict{“table_name”:“test,“batch_no”:”20221201”}),则确定被调用函数传入函数参数。
步骤306、若被调用函数有传入函数参数,注册类直接利用传入函数参数执行被调用函数,并将传入的参数名称与参数值以键值对的形式存入全局缓存中。
其中,在本公开实施例中,若被调用函数有传入函数参数,注册类可以直接利用传入函数参数中的参数值执行被调用函数,并将被调用函数的执行结果输出。
以及,在本公开实施例中,在被调用函数执行完成后,可以将该被调用函数传入的参数名称与参数值以键值对的形式存入全局缓存中,以便后续再次调用该函数时,可以直接进行应用。
步骤307、若被调用函数无传入函数参数,注册类根据被调用函数的参数名称从全局缓存中匹配对应目标参数值,并利用目标参数值执行被调用函数。
其中,在本公开实施例中,若被调用函数无传入函数参数,注册类可以根据被调用函数的参数名称从全局缓存中匹配对应目标参数值,且自动赋值无法匹配参数的目标参数值为空,并利用目标参数值执行被调用函数。
以及,在本公开实施例中,可以直接从控制反转容器调用函数,且可以根据需要确定是否传入函数参数,使得调用函数的方式更加灵活,同时简化了调用函数的过程。
本公开提出的基于python的控制反转实现方法中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
图4为根据本公开一个实施例提供的基于python的控制反转实现方法的流程示意图,如图4所示,可以包括:
步骤401、在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中。
步骤402、注册类通过注解标注的标识对添加至注册类中的类和/或函数进行注册。
其中,在本公开实施例中,上述注册类可以通过注解标注的标识对添加至注册类中的类和/或函数进行注册,使得每个类或函数均有唯一对应的标识,以便后续可以直接根据标识对注册类中的类或函数进行修改。
步骤403、在控制反转容器启动之后,通过监控类监控工程执行目录内的脚本是否存在变动。
其中,在本公开实施例中,在控制反转容器启动之后,可以通过监控类监控工程执行目录内的脚本对应的时间确定工程执行目录内的脚本是否存在变动。具体地,在本公开实施例中,监控类会实时监控工程执行目录内的脚本对应的时间,若脚本对应时间发生变化,则确定该脚本存在变动。
步骤404、若工程执行目录内的脚本存在变动,则通过自动发现类对变动的脚本进行扫描,得到新增注解标注和/或已有注解标注。
步骤405、将扫描得到的新增注解标注对应的类或函数添加至注册类中;和/或
将存在变动脚本中已有注解标注对应的类或函数替换注册类中已有注解标注对应的类或函数。
其中,在本公开实施例中,若通过自动发现类得到新增注解标注,说明脚本中存在新增的类或函数,则直接将新增注解标注对应的类或函数添加至注册类中。
以及,在本公开实施例中,若通过自动发现类得到已有注解标注,说明是对已有的类或函数进行修改,则将已有注解标注对应的类或函数替换注册类中已有注解标注对应的类或函数,以完成对已有类或函数的修改。
需要说明的是,在本公开实施例中,通过上述步骤使得控制反转容器可以支持动态更新,从而使得控制反转容器在使用上更加灵活便捷。
步骤406、响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数。
步骤407、响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。
关于步骤406~步骤407的详细介绍可以参考上述实施例中的相关介绍,本公开实施例在此不做赘述。
本公开提出的基于python的控制反转实现方法中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
图5是根据一示例性实施例示出的一种基于python的控制反转实现装置的框图。
如图5所示,该基于python的控制反转实现装置500包括:扫描模块501、确定模块502、执行模块503。
扫描模块501,用于在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;
确定模块502,用于在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;
执行模块503,用于响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。
本公开提出的基于python的控制反转实现装置中,在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;在控制反转容器启动之后,响应于接收到函数的调用请求,确定控制反转容器中是否存在被调用函数,其中,调用请求中包括被调用函数;响应于被调用函数存在,通过注册类对被调用函数进行参数解析,并利用解析后的参数值执行被调用函数。由此,本公开提出的方法中,可以直接从控制反转容器中获取被调用函数,减少了对象的创建和内存消耗,无需重新建立IOC容器,且通过在配置文件中配置的编号去获取对应的对象,简化了调用函数的过程。
其中,本公开的实施例中,上述装置,还用于:
确定添加至注册类中的函数是否为有参函数;
若添加至注册类中的函数为有参函数,解析有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对的形式存入全局缓存中。
可选的,本公开的实施例中,上述确定模块502,具体用于:
将被调用函数的函数名称与注册类中的函数名称进行比较;
若注册类中存在被调用函数的函数名称,则确定控制反转容器中存在被调用函数;
若注册类中不存在被调用函数的函数名称,则确定控制反转容器中不存在被调用函数。
可选的,本公开的实施例中,上述执行模块503,具体用于:
注册类确定被调用函数是否传入函数参数;
若被调用函数有传入函数参数,注册类直接利用传入函数参数执行被调用参数,并将传入函数参数与对应的参数名称以键值对的形式存入全局缓存中;
若被调用函数无传入函数参数,注册类根据被调用函数的参数名称从全局缓存中匹配对应目标参数值,并利用目标参数值执行被调用参数。
可选的,本公开的实施例中,上述装置,还用于:
注册类通过注解标注的标识对添加至注册类中的类和/或函数进行注册。
可选的,本公开的实施例中,上述装置,还用于:
在控制反转容器启动之后,通过监控类监控工程执行目录内的脚本是否存在变动;
若工程执行目录内的脚本存在变动,则通过自动发现类对变动的脚本进行扫描,得到新增注解标注和/或已有注解标注;
将扫描得到的新增注解标注对应的类或函数添加至注册类中;和/或
将存在变动脚本中已有注解标注对应的类或函数替换注册类中所述已有注解标注对应的类和/或函数。
图6是根据一示例性实施例示出的一种电子设备的框图。
如图6所示,上述电子设备600包括:
处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
多媒体组件608包括在电子设备600和用户之间的提供一个输出接口的触控显示屏。在一些实施例中,触控显示屏可以包括液晶显示器(LCD)和触摸面板(TP)。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。
在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据预热缓存方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本公开实施例的基于python的控制反转实现方法。的解释说明,此处不再赘述。
为了实现上述实施例,本公开还提出一种计算机可读存储介质。
其中,该计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例第一方面或第二方面或第三方面的基于python的控制反转实现方法。可选的,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
为了实现上述实施例,本公开还提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述实施例第一方面或第二方面或第三方面实施例的基于python的控制反转实现方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述实施例第一方面或第二方面或第三方面的基于python的控制反转实现方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种基于python的控制反转实现方法,其特征在于,包括:
在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;
在控制反转容器启动之后,响应于接收到函数的调用请求,确定所述控制反转容器中是否存在被调用函数,其中,所述调用请求中包括被调用函数;
响应于所述被调用函数存在,通过所述注册类对所述被调用函数进行参数解析,并利用解析后的参数值执行所述被调用函数。
2.如权利要求1中所述的方法,其特征在于,所述在控制反转容器启动之后,响应于接收到函数的调用请求之前,还包括:
确定添加至所述注册类中的函数是否为有参函数;
若所述添加至所述注册类中的函数为有参函数,解析所述有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对的形式存入全局缓存中。
3.如权利要求1中所述的方法,其特征在于,所述确定所述控制反转容器中是否存在被调用函数,包括:
将所述被调用函数的函数名称与所述注册类中的函数名称进行比较;
若所述注册类中存在被调用函数的函数名称,则确定所述控制反转容器中存在被调用函数;
若所述注册类中不存在被调用函数的函数名称,则确定所述控制反转容器中不存在被调用函数。
4.如权利要求2中所述的方法,其特征在于,所述通过所述注册类对所述被调用函数进行参数解析,并利用解析后的参数值执行所述被调用函数,包括:
所述注册类确定所述被调用函数是否传入函数参数;
若所述被调用函数有传入函数参数,所述注册类直接利用所述传入函数参数执行所述被调用函数,并将传入的参数名称与参数值以键值对的形式存入全局缓存中;
若所述被调用函数无传入函数参数,所述注册类根据所述被调用函数的参数名称从全局缓存中匹配对应目标参数值,并利用所述目标参数值执行所述被调用函数。
5.如权利要求1中所述的方法,其特征在于,所述方法,还包括:
所述注册类通过注解标注的标识对添加至注册类中的类和/或函数进行注册。
6.如权利要求5中所述的方法,其特征在于,所述方法,还包括:
在所述控制反转容器启动之后,通过监控类监控工程执行目录内的脚本是否存在变动;
若所述工程执行目录内的脚本存在变动,则通过自动发现类对所述变动的脚本进行扫描,得到新增注解标注和/或已有注解标注;
将扫描得到的新增注解标注对应的类或函数添加至所述注册类中;和/或
将存在变动脚本中已有注解标注对应的类或函数替换所述注册类中所述已有注解标注对应的类或函数。
7.一种基于python的控制反转实现方法,其特征在于,包括:
扫描模块,用于在控制反转容器启动期间,通过自动发现类对工程内的类和/或函数进行注解扫描,将存在注解标注的类和/或函数添加至注册类中;
确定模块,用于在控制反转容器启动之后,响应于接收到函数的调用请求,确定所述控制反转容器中是否存在被调用函数,其中,所述调用请求中包括被调用函数;
执行模块,用于响应于所述被调用函数存在,通过所述注册类对所述被调用函数进行参数解析,并利用解析后的参数值执行所述被调用函数。
8.如权利要求7中所述的装置,其特征在于,所述装置,还用于:
确定添加至所述注册类中的函数是否为有参函数;
若所述添加至所述注册类中的函数为有参函数,解析所述有参函数传入的参数,并将通过解析得到的参数名称与参数值以键值对的形式存入全局缓存中。
9.如权利要求7中所述的装置,其特征在于,所述确定模块,具体用于:
将所述被调用函数的函数名称与所述注册类中的函数名称进行比较;
若所述注册类中存在被调用函数的函数名称,则确定所述控制反转容器中存在被调用函数;
若所述注册类中不存在被调用函数的函数名称,则确定所述控制反转容器中不存在被调用函数。
10.如权利要求8中所述的装置,其特征在于,所述执行模块,具体用于:
所述注册类确定所述被调用函数是否传入函数参数;
若所述被调用函数有传入函数参数,所述注册类直接利用所述传入函数参数执行所述被调用参数,并将传入的参数名称与参数值以键值对的形式存入全局缓存中;
若所述被调用函数无传入函数参数,所述注册类根据所述被调用函数的参数名称从全局缓存中匹配对应目标参数值,并利用所述目标参数值执行所述被调用参数。
11.如权利要求7中所述的装置,其特征在于,所述装置,还用于:
所述注册类通过注解标注的标识对添加至注册类中的类和/或函数进行注册。
12.如权利要求11中所述的装置,其特征在于,所述装置,还用于:
在所述控制反转容器启动之后,通过监控类监控工程执行目录内的脚本是否存在变动;
若所述工程执行目录内的脚本存在变动,则通过自动发现类对所述变动的脚本进行扫描,得到新增注解标注和/或已有注解标注;
将扫描得到的新增注解标注对应的类或函数添加至所述注册类中;和/或
将存在变动脚本中已有注解标注对应的类或函数替换所述注册类中所述已有注解标注对应的类和/或函数。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-6中任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310738161.XA CN116860360A (zh) | 2023-06-20 | 2023-06-20 | 一种基于python的控制反转实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310738161.XA CN116860360A (zh) | 2023-06-20 | 2023-06-20 | 一种基于python的控制反转实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860360A true CN116860360A (zh) | 2023-10-10 |
Family
ID=88234955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310738161.XA Pending CN116860360A (zh) | 2023-06-20 | 2023-06-20 | 一种基于python的控制反转实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860360A (zh) |
-
2023
- 2023-06-20 CN CN202310738161.XA patent/CN116860360A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951336B (zh) | 应用程序安装方法及装置 | |
CN104462296B (zh) | 文件的管理方法、装置及终端 | |
CN107357613B (zh) | 应用更新方法、装置及计算机可读存储介质 | |
CN106547547B (zh) | 数据采集方法及装置 | |
CN105100074A (zh) | 数据操作处理方法、装置以及终端设备 | |
CN105094904A (zh) | 安装应用程序的方法及装置 | |
CN107402756B (zh) | 用于绘制页面的方法、装置及终端 | |
CN115185717A (zh) | 接口调用方法、装置、电子设备和存储介质 | |
CN111241134B (zh) | 一种数据处理方法及装置 | |
CN110221813B (zh) | 应用的数据连接建立方法、装置、存储介质和电子设备 | |
CN113778398B (zh) | 代码生成方法、装置、电子设备及存储介质 | |
CN115562657A (zh) | 目标代码生成方法、装置和设备 | |
CN116860360A (zh) | 一种基于python的控制反转实现方法和装置 | |
CN111667827B (zh) | 应用程序的语音控制方法、装置及存储介质 | |
CN110457084B (zh) | 一种加载方法及装置 | |
CN106843860B (zh) | 一种调整搜索框的显示样式的方法、装置和系统 | |
CN113778385B (zh) | 组件注册方法、装置、终端及存储介质 | |
WO2023245344A1 (zh) | 一种应用程序处理方法、装置、终端及存储介质 | |
CN115202762B (zh) | 应用程序控制方法、装置、电子设备及存储介质 | |
CN114531493B (zh) | 一种请求处理方法、装置、电子设备及存储介质 | |
CN115098200B (zh) | 语言切换方法、装置、电子设备及存储介质 | |
CN113986577B (zh) | 基于定时器的数据处理方法、装置及设备 | |
CN115203618B (zh) | 页面处理方法、装置、电子设备及存储介质 | |
CN111538544B (zh) | 配置数据的显示方法、装置、电子设备及存储介质 | |
CN110659081B (zh) | 用于程序对象的文件处理方法、装置及电子设备 |
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 |