首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中动态创建类的方法

0x00 前言 在Python中,类也是作为一种对象存在的,因此可以在运行时动态创建类,这也是Python灵活性的一种体现。 本文介绍了如何使用type动态创建类,以及相关的一些使用方法与技巧。...0x01 类的本质 何为类?类是对现实生活中一类具有共同特征的事物的抽象,它描述了所创建的对象共同的属性和方法。在常见的编译型语言(如C++)中,类在编译的时候就已经确定了,运行时是无法动态创建的。...0x02 使用type动态创建类 type的参数定义如下: type(name, bases, dict) name: 生成的类名 bases: 生成的类基类列表,类型为tuple dict: 生成的类中包含的属性或方法...可以使用six库中的方法: import six @six.add_metaclass(MetaClass) class IntTypeBase(object): pass 使用元类的优点是可以使用更加优雅的方式创建类...0x05 总结 动态创建类必须要使用type实现,但是,根据不同的使用场景,可以选择不同的使用方法。 这样做对静态分析工具其实是不友好的,因为在运行过程中类型发生了变化。

3.5K30

Python中动态创建类的方法

0x00 前言 在Python中,类也是作为一种对象存在的,因此可以在运行时动态创建类,这也是Python灵活性的一种体现。 本文介绍了如何使用type动态创建类,以及相关的一些使用方法与技巧。...0x01 类的本质 何为类?类是对现实生活中一类具有共同特征的事物的抽象,它描述了所创建的对象共同的属性和方法。在常见的编译型语言(如C++)中,类在编译的时候就已经确定了,运行时是无法动态创建的。...生成的类中包含的属性或方法 例如:可以使用以下方法创建一个类A cls = type('A', (object,), {'__doc__': 'class created by type'}) print...可以使用six库中的方法: import six @six.add_metaclass(MetaClass) class IntTypeBase(object): pass 使用元类的优点是可以使用更加优雅的方式创建类...0x05 总结 动态创建类必须要使用type实现,但是,根据不同的使用场景,可以选择不同的使用方法。 这样做对静态分析工具其实是不友好的,因为在运行过程中类型发生了变化。

5.2K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法?

    A对象的时候父类会调用子类方法?...但是:创建B对象父类会调用父类的方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...如果,子类重写了父类的方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父类的方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译的时候,父类构造方法调用的方法的参数已经强制转换为符合父类方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。

    6.2K10

    Salesforce Integration 概览(二) Remote Process Invocation—Request and Reply(远程进程调用--请求和响应)

    在Salesforce中捕获订单详细信息后,将在远程系统中创建订单,该系统将管理订单直至结束。 当您实现此模式时,Salesforce调用远程系统来创建订单,然后等待成功完成。...的操作,该操作随后执行上述说的代理Apex类以执行远程调用。...Apex web service或REST必须自定义去发送唯一的消息ID。此外,在远程系统中创建记录的操作必须在插入之前检查重复项,我们可以通过从Salesforce传递唯一的记录ID进行检查。...如果远程系统中存在该记录,请更新该记录。在salesforce的世界里面很好理解,就是 upsert操作,我们需要创建一个外键,这个外键设置唯一即可。 3....在必要时,考虑使用单向加密或数字签名,使用Apex Crypto类方法来确保请求完整性。   •必须通过实施适当的防火墙机制来保护远程系统。 4.

    1.4K40

    salesforce的功能_salesforce开发

    设置为View且Opportunity页面布局的Quote放出来了,如果共享Opp的Owner没有创建Quote记录,Partner User不可见Quote相关列表,需要创建一条Quote,才可以看见...,而方法可以是利用soql语言查找到某一记录的主码,这里是Id(使用rest服务请求获取到uri后从uri中取得的id) HttpDelete步骤: 1、创建ResrRequest对象req 2、声明caseId...中在使用类继承时需要使用到的关键字:extends,super,virtual,override.跟Java继承不同的是,超类必须使用virtual修饰,子类使用override和extends修饰,如果需要重写父类的方法...,父类中该方法需要用virtual修饰,子类需要使用override。...另外如果子类需要使用超类的域或者方法则需要使用super关键字,注意构造方法的复用不需要用成对的virtual和override关键字修饰超类的构造方法和子类的构造方法。

    7K20

    salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随便的取一个审批人了,有以下方式针对不同的场景可以获取到当前记录的最终审批人以及审批意见。...,如果审批流程在审批过程中,再次更改Type则提示有审批中的记录,不允许再次修改。...1)在email template中使用apex component,通过component的controller方法获取需要的相关信息。  ...使用apex class时应该注意,component中绑定的attribute在后台的变量是没法使用在controller中的,所以不能再构造函数中使用targetObjId. 1 global without...,当approver__c存在值情况下,发送邮件,邮件模板中的审批人使用Approver__c即可,此种方式不在下面体现了,有兴趣的可以自行尝试。

    1.3K00

    Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)

    不可能跨多个API调用跨事务。为了克服这个限制,一个API调用可以影响多个对象。...通过soapi发布事件与创建Salesforce记录相同。仅支持创建和插入操作。...通过restapi发布事件与创建Salesforce记录相同。仅支持创建和插入操作。 Apex web services Suboptimal Apex类方法可以作为web服务方法公开给外部应用程序。...此方法是SOAP API的替代方法,通常仅在必须满足以下附加要求的情况下使用。 •需要全面的事务支持(例如,在一个事务中创建帐户、联系人和机会)。...Apex REST services Suboptimal Apex类可以公开为映射到特定uri的REST资源,并使用针对它定义的HTTP谓词(例如POST或GET)。

    2.8K20

    salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随便的取一个审批人了,有以下方式针对不同的场景可以获取到当前记录的最终审批人以及审批意见。...,如果审批流程在审批过程中,再次更改Type则提示有审批中的记录,不允许再次修改。...1)在email template中使用apex component,通过component的controller方法获取需要的相关信息。  ...使用apex class时应该注意,component中绑定的attribute在后台的变量是没法使用在controller中的,所以不能再构造函数中使用targetObjId. 1 global without...,当approver__c存在值情况下,发送邮件,邮件模板中的审批人使用Approver__c即可,此种方式不在下面体现了,有兴趣的可以自行尝试。

    1.4K90

    Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)

    在Salesforce中捕获订单详细信息后,将在远程系统中创建订单,该系统将管理订单直至结束。...•声明性配置方法是否优于定制Apex开发?在这种情况下,平台事件等解决方案优先于Apex标注。 三....然后可以使用任一API的标准方法来执行所需的业务功能。此变体的典型用法是Salesforce向远程系统发送出站消息以创建记录。回调使用在远程系统中创建的记录的唯一键更新原始Salesforce记录。...Apex代理类可以通过使用Apex Trigger作为DML操作的结果来执行。但是,从触发器上下文中发出的所有调用都必须异步执行。...在必要时,考虑使用APEX密码类方法使用单向散列或数字签名,以确保请求的完整性。 •必须通过实施适当的防火墙机制来保护远程系统。

    1.5K10

    salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)

    本人最开始用的自己申请的免费帐户使用Custom Object来进行测试,发现的尴尬的事情就是Profile为System Admin的账户可以看到相关创建的Tab,并且可以锁定记录,但是其他非System...5.设置action,action type有如下很多种,在这里可以选择Apex或者Submit for Approval,因为apex代码可以通过Approval类调用lock()方法,在这里选择通过配置...14.save以后选择创建approval step,点击Go ? 15.输入基本信息后点击Next ?...16.选择Enter step方式,然后选择formula方式,在formula中输入false,点击Next ? 17选择分配的审批者,按需选择,这里选择默认的,点击Save ?...Apex代码可以很轻松获取当前用户的Permission Set以及通过Approval类可以很轻松的调用Lock()方法。

    1K90

    salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable

    eg:在类中声明成员变量A,在start()方法对A进行处理,如果类不实现上述接口,则方法执行完start()方法后A会回滚到初始状态,在execute()方法或者finish()方法调用A时值为最开始声明的值...实现批处理类步骤明确,只需要执行以下的步骤: 1.实现Database.Batchable接口; 2.实现start()方法,此方法中通常写查询语句,并将数据通过Database.getQueryLocator...,如果需要好的质量可以使用Queueable方法;   2)可以允许两个future方法同时运行,当两个future方法同时对一条记录进行操作时,可能引起记录锁定或者运行时异常。   ...测试future方法在Test类中执行,和普通的方法测试区别的是,future方法执行需要在Test.startTest()和Test.stopTest()方法中进行.以下为测试代码: @isTest...的查找按钮选择需要定时任务的实现Schedulable接口的类,设定时间,点击保存; 4.定时任务创建成功,在setup-->Jobs-->Scheduled Jobs中可以看到创建的定时任务了。

    2.1K71

    salesforce零基础学习(一百一十七)salesforce部署方式及适用场景

    可能针对一个字段的创建,直接生产创建,然后手动配置了FLS,或者部署一个 report type / report基于change set,又或者需要删除一个 apex class,通过 metadata...2.即使不使用scratch org创建包,它也必须能够部署到scratch org,否则包创建将失败。 3.每个依赖项必须在包中或另一个包中。...举个例子,我们有一个Apex类,该类对其测试类没有正式的依赖关系,但我们在部署时必须具有测试覆盖率,因此如果不包含测试,则某个更改集将无法部署。在点击这个按钮时,这个测试类不会被自动捕获。...部署也只针对我们整理的资源,其他不在package.xml或者不在整理中的资源不会做任何操作。 1. 限制: 与change set类似,每个事务只允许最多10000个文件。...也有一些客户使用非管理型软件包,这些软件包是不可能升级的。 第二代软件包是从源代码创建的,而不是从一个org的内容中创建的。

    1.3K20

    Salesforce Integration 概览(七) Data Virtualization数据可视化

    Salesforce Connect允许您: •查询外部系统中的数据。 •在外部系统中创建、更新和删除数据。 •通过列表视图、详细信息页、记录提要、自定义选项卡和页面布局访问外部对象。...•通过Apex创建的自定义适配器-如果OData和跨组织适配器不适合您的需要,请使用Apex连接器框架开发您自己的适配器。...在Salesforce中,您可以使用WSDL并生成最终的代理Apex类。此类提供调用远程服务所需的逻辑。...自定义Visualforce页面或按钮以同步方式启动Apex HTTP调用(REST服务)。在Salesforce中,可以使用标准的GET、POST、PUT和DELETE方法调用HTTP服务。...可以使用几个HTTP类与RESTful服务集成。Visualforce页上用户启动的操作然后调用Apex控制器操作,该操作执行这些代理Apex类以执行远程调用。

    1.8K20

    salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)

    ,有些逻辑通过Apex写起来很容易,此篇内容为通过Process Builder 和Apex代码实现锁定记录。...一.获取允许在apex中使用Lock 和UnLock记录的权限:Setup->Build->Create->Workflow&Approvals->Process Automation Settings...当我们使用Process Builder选择Action为Apex的时候,我们需要选择相关Action执行的类,此类中的方法必须要是InvocableMethod的一个方法,即需要添加@InvocableMethod...一个类中仅允许有一个此注解的方法。...5.设置加锁条件所走的Action,我们在Action Type选择Apex代码,并选择相关操作的类,并且要传递参数,程序中传的是ID,这里我们选择Opportunity的ID ?

    89660

    salesforce 零基础学习(六十)Wizard样式创建数据

    项目中表之间关联关系特别多,比如三个表中A,B,C  C作为主表,A,B作为从表,有时候C表需要创建数据时,同时需要创建A,B两个表的数据,这种情况下,使用Wizard样式会更加友好。...新建Goods__c记录以后同时要创建其相关的数据。...表结构关系如下: 代码: 1.GoodsHelper:封装获取goods的列表方法 1 public without sharing class GoodsHelper { 2 3....total页面 5.点击save以后,成功则跳转到list页面,失败则显示失败ERROR 失败情况: 成功情况: 总结:Wizard适用于新建数据时创建一套级联数据情况,篇中step1-3之间的跳转均使用转发方式...如果使用重定向,则前一页修改的数据重定向以后在回此页面,修改的数据便会回滚到以前的状态。有错误的地方欢迎指正,有问题欢迎留言。

    89290

    Salesforce页面开发工具—Visualforce介绍

    利用强大的内置Standard controller特性,或用Apex写你自己的业务逻辑。你可以为公司创建独有的功能或开发应用放在AppExchange中进行销售。...当访问没有记录ID时,页面会显示为一个空白输入框。...当你输入值并点击保存时,一个新的联系人将会根据你填的表格数据进行创建 当访问有记录ID时,页面会查询到这条数据并将它显示到表格中,当你点击保存时,你对联系人的更改将会保存到数据库中 每个输入字段都会智能的显示字段值...电子邮件字段知道一个有效的电子邮件地址是什么样的,如果输入无效的邮件地址会显示出错误信息 当你点击日期字段时,日期型字段会显示出日期小部件,帮助你更容易的输入正确日期 保存按钮调用保存的事件方法,许多标准的行为都是根据...Salesforce提供了一系列你可以在组织内使用Visualforce的方法。你可以拓展Salesforce内置的功能,替换原有功能或创建一个全新的App。

    2.5K20

    salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)

    1.salesforce中提供了Track History功能,即当表字段小于20个情况下,可以通过设置Track History,那样系统会自动创建相关表的History表,在这个demo中系统会自动创建...,如果有相对应的GoodsSign__c进行对应,则update此记录,否则新建记录,并记录哪些字段有修改; 2.当进行删除操作时,如果有相对应的GoodsSign__c进行对应,则级联删除。...两者操作均需要当前用户有GoodsSign的操作权限。 2.新建一个类用来记录导出的字段以及导出的字段的颜色。...总结:上述demo只是演示当字段Tracking超过20个需要额外创建表的情况处理,当小于20个情况下可以直接通过History的表进行查询,有兴趣的可以自己尝试,生成页面因为使用DataTable,所以对于导出的记录行数有要求...篇中如果有写的错误的地方欢迎指出,如果有疑问地方欢迎留言,转载请注明出处。

    1.6K70

    通俗易懂设计模式解析——命令模式

    但是对于某些特殊场合这么一种紧耦合的状态就不合适了。例如对行为命令的”日志记录、撤销/恢复、命令的队列”等操作就不太合适了。那么在这些情况下如何对这些命令进行统一的管理呢?实现其松耦合呢?...要求命令对象执行请求 命令接收者:真正的命令的执行者、实现具体功能 命令角色:声明所有的命令的一个抽象类 具体命令角色:命令接口实现对象、持有命令接收者、调用接收者完成命令的执行 在我们日常软件开发过程中必定会涉及到信息的增删改查...但是对于一些重要的信息进行操作的时候我们是否就需要对其进行控制了。比如对其操作的日志的记录。对操作命令的撤销恢复。...、命令需要进行管理控制时 二、优点 1、降低了系统的耦合性 2、新的命令可以很容易添加到系统中 3、可以将命令组合在一起形成合成命令 4、可以设计实现撤销、重新执行的操作 三、缺点 1、使用命令模式可能导致有过多的具体命令类...----    一个人如若不能使自己的人生辉煌,但也没有理由使它黯淡;人生可以平凡,但不可以庸俗、堕落;人生不在乎掠取多少,而在于追求过程的完美与卓越! C#设计模式系列目录

    50840

    设计模式 ——— 命令模式

    任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。 结构 ? Command: 定义命令的接口,声明执行的方法。...② 另外一种方式是存储恢复式 意思就是把操作前的状态记录下来,然后要撤销操作的时候就直接恢复回去就可以了。...一个接收者对象可以处理多个命令,接收者和命令之间没有约定的对应关系。接收者提供的方法个数、名称、功能和命令中的可以不一样,只要能够通过调用接收者的方法来实现命令对应的功能就可以了。...工作队列对象不在乎到底做些什么,它们只知道取出命令对象,然后调用其execute()方法。类似地,它们只要实现命令模式的对象,就可以放入队列里,当线程可用时,就调用此对象的execute()方法。...日志请求 某些应用需要我们将所有的动作都记录在日志中,并能在系统死机之后,重新调用这些动作恢复到之前的状态。

    55740

    salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项

    我们都知道,当一条记录进入审批流程以后会自动加锁,apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁。...,于是我自信满满的开始跑业务,跑到了这块方法的时候,第一个error message显示了: System.UnexpectedException: Apex approval lock/unlock...此种问题原因是因为在salesforce中没有配置允许使用apex代码对记录进行加锁,解锁。...这个问题,因为我的xxApproval.Id通过追踪以后发现并不是null,那么只有一种可能,没有Approval.unlock方法,额,亦或是当前api version没有此方法,然后看一下这个类的api...总结:使用某个类或者某个类的某个方法时,需要了解此类或者此方法支持的api版本是多少,如果项目是以前的,api版本通常不会高,有些方法不支持,这个时候不要怀疑自己的代码能力,怀疑一下你使用的api version

    92380
    领券