首页 > 编程语言 >Python中的__new__()方法

Python中的__new__()方法

时间:2022-10-07 23:33:20浏览次数:60  
标签:__ return Python init 实例 new cls

1、__new__()至少要有一个参数cls,代表当前类,此参数在实例时由python解释器自动识别,

2、__new__()必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,
   可以 return父类new出来的实例,
如:return super(当前类名,cls).__new__(cls),或者直接return object.__new__(cls) 3、init有一个参数self,就是这个__new__()方法返回的实例,
可以完成一些其它初始化的动作,init不需要返回值(有返回值就会报错) 4、如果__new__()创建的是当前类的实例,会自动调用__init__()函数,
通过return语句里面调用的__new__(cls)函数的第一个参数是cls来保证是当前类实例,
如果是其他类的类名,那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__()函数,也不会调用其他类的__init__()函数。

通过new方法实现单例:

'''
__new__实现   ---> 通过调用类方法实例化对象时,自动触发的__new__来实现单例
'''


class Aoo(object):
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = object.__new__(cls)

        return cls._instance


a1 = Aoo()
a2 = Aoo()
# print(a1 is a2)  # True

 

标签:__,return,Python,init,实例,new,cls
From: https://www.cnblogs.com/yesirya/p/16767518.html

相关文章

  • 阿里巴巴矢量图标库的使用细节
    之前都在用iconmoon,今天在更换一个按键图标时用了阿里巴巴矢量图标库,因此记录一下不同和细节 准备工作登录选择图标库在创作者的icon中选择 (如需要可以加入自己仓......
  • 【深度学习前沿应用】图像分类Fine-Tuning
    【深度学习前沿应用】图像分类Fine-Tuning作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资......
  • 剑指 Offer 03. 数组中重复的数字
    力扣链接:剑指Offer03.数组中重复的数字acwing链接最初的思路是,将所有数据放入桶中,数据存在,数据桶值就++,有数据重复就retrunnums[i],无数据重复就return-1,且需......
  • SpringBoot加载自动配置类的流程
    自定义过starter的同学应该都知道,自动配置类需要用EnableAutoConfiguration注解修饰,并且需要将自动配置类配置在spring.factories中。但自动配置类是如何被SpringBoot加......
  • ES API基本操作
    创建索引,user为索引名称PUThttp://192.168.0.110:9200/user查询索引基本信息GEThttp://192.168.0.110:9200/user查询所有索引GEThttp://19......
  • Python 使用zmail、imapclient或imap_tools接收邮件
    Python中,可以使用通过代码方式接收邮件,本文主要介绍使用zmail、imapclient和imap_tools三种方法接收邮件,以及相关的示例代码。原文地址:Python使用zmail、imapclient或ima......
  • python写脚本测试执行为什么要写if __name__ == '__main__'
    我的博客在写python脚本的时候,例如,我写一个test1.pydeftest(n):print(n)if__name__=='__main__':n=1test(1)接下来打开cmd命令窗口,执行命令python......
  • LeetCode 阶乘后的零算法题解 All In One
    LeetCode阶乘后的零算法题解AllInOnefactorial阶乘后的零原理图解实现factorial计算后面0的个数,除0!本身的0阶乘!https://www.shuxuele.com/num......
  • 学习mysql176. 第二高的薪水
     SQL架构Employee 表:+-------------+------+|ColumnName|Type|+-------------+------+|id|int||salary|int|+-------------+---......
  • 进程、内存指令
    目录查看进程信息:ps动态显示进程:top终止进程:kill检测磁盘空间:df检测目录所占磁盘空间:du查看进程信息:ps进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元......