1.__new__(cls, *args, **kwargs) 创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身

2.__init__(self, *args, **kwargs) 创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】

3.__call__(self, *args, **kwargs) 如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符

看具体的例子:

打印出来的是:

newinit________call

比如:Python Singleton(单例模式)实现,那我们是不是只是重载一些__new__方法就可以了

可不可以重载__init__方法呢?明显不可以,因为__init__之前调用了__new__方法,这时候已经生成了一个对象了,没办法实现单例模式

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

__call__()和call的区别_python中的__init__ 、__new__、__call__小结相关推荐

  1. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  2. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  3. python中_new_和_init_的区别_Python 中的__new__和__init__的区别

    [同] 二者均是Python面向对象语言中的函数,__new__比较少用,__init__则用的比较多. [异] __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是 ...

  4. python中setattr用法_python 中__setattr__, __getattr__,__getattribute__, __call__使用方法

    object._getattr_(self, name) 拦截点号运算.当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法.如果继承树可以找到该属性,则不调用此方法 实例in ...

  5. python 元类的call_【原创】Python 对象创建过程中元类, __new__, __call__, __init__ 的处理...

    原始type: type是最原始的元类,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple, attr ...

  6. python中def _init_是什么意思_python中的__init__(self)是什么意思呢

    __init__(self)这个时类的初始化函数 classObj:def __init__(self):print 1obj= Obj() #这时候__init__这个函数会被调用,self指obj ...

  7. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  8. python多线程和多进程的区别_python中多线程与多进程的区别

    线程的概念: 线程是操作系统中进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程可以有多个线程,每条线程可以同时执行不同的任务.一个 ...

  9. python中for循环和while循环的区别_Python中for循环和while循环有什么区别?

    for循环和while循环有什么区别?众做周知,循环是Python中最基础也是最常见的知识点之一,下面我们来一起好好学习一下for循环和while循环,并对比分析两者的使用区别,帮助Python初学者 ...

最新文章

  1. leetcode 122 买卖股票的最佳时机II
  2. Android8.0恢复出厂设置失败-BroadcastQueue: Background execution not allowed
  3. Linux chmod命令修改文件与文件夹权限命令代码
  4. SSM中实现分页与JUnit单元测试
  5. Java中 ArrayList类常用方法和遍历
  6. Intellij IDEA中maven更新不下来pom中的jar包,reimport失效
  7. Java Word转Html
  8. c6x Linux 内核中断分析
  9. Mysql设置binlog过期时间并自动删除
  10. (组合数学笔记)Pólya计数理论_Part.3_置换群及其性质
  11. Nginx + uWSGI + Flask + Vhost
  12. 写一条SQL,使它通过全表扫描方式的效率优于索引访问,分别给出各自的执行计划。...
  13. css html颜色,CSS颜色
  14. DataPipeline王睿:业务异常实时自动化检测 — 基于人工智能的系统实战
  15. 固体激光器的转换效率
  16. 【墙角数枝梅,凌寒独自开】代码改变未来
  17. 《诺曼底大风暴》观后感
  18. mercury重置密码后服务器无响应,melogin.cn打不开的解决办法 水星路由器重置完无法上网...
  19. 计算机 北航 在线作业,北航计算机组成原理在线作业
  20. 微信小程序----事件绑定

热门文章

  1. golang 数组 最后一个_Golang 内存管理
  2. nodejs参数的接收(post和get)
  3. java垃圾回收GC(学习笔记)
  4. 网络不稳定的原因_关键词排名波动原因,如何解决网站排名不稳定!
  5. java面试算法总结_面试10大算法汇总——Java篇
  6. SpringCloud feign、hystrix、zuul超时配置
  7. 电子邮件一般不在用户计算机中,[单选] 在一个完整的Internet电子邮件地址中,决定用户信箱所在的计算机地址的是()。...
  8. ansys18安装以后打不开_【偷偷告诉你】在微信里直接安装apk.1
  9. mysql5.3.4 mac 配置_Mac下安装与配置MySQL
  10. Hands-on Lab (14) - 部署StatefulSets应用