美文网首页Python基础系列
Python的__new__进行构造类的实例化

Python的__new__进行构造类的实例化

作者: 我爱学python | 来源:发表于2019-08-12 16:12 被阅读9次

new方法

  1. 这个方法是用来生成类的实例
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Singleton(object):
    def __new__(cls,*args, **kwargs): ①
        if not hasattr(cls,'_inst'):   
            print(cls)
            cls._inst = super(Singleton, cls).__new__(cls) ②
        return cls._inst ②

① 第一个参数必须是"要进行实例化的类".
② 返回实例完成的结果,如果实例化失败那么实例的初始化函数"init"肯定不会执行

Python2(2.7)的写法

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Singleton(object):
    def __new__(cls,*args, **kwargs): ①
        if not hasattr(cls,'_inst'):   
            print(cls)
            cls._inst = super(Singleton, cls).__new__(cls,*args,**kwargs) ②
        return cls._inst ②

Python3(3.5)的写法

class Singleton(object):
    def __new__(cls,*args, **kwargs): ①
        if not hasattr(cls,'_inst'):   
            print(cls)
            cls._inst = super(Singleton, cls).__new__(cls) ②
        return cls._inst ②

如果Python3的写法跟Python2写法一样,那么倒数第二行会报错"TypeError: object() takes no parameters"

相关文章

  • Python的__new__进行构造类的实例化

    new方法 这个方法是用来生成类的实例 ① 第一个参数必须是"要进行实例化的类".② 返回实例完成的结果,如果实例...

  • python类中__init__和__new__的区别

    转自 Python 之 new() 方法与实例化 __new__() 是在新式类中新出现的方法,它作用在构造方法建...

  • Python Magic and Builtin Method

    构造和初始化 __new__用来调用这个类,并返回这个类的实例 __init__只是将传入的参数来初始化该实例 控...

  • 类中内建函数

    Python的构造函数是__new__函数,不是__init____new__(cls)构造器:用于控制实例的生产...

  • Python __new__的作用

    __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python中存...

  • 魔法__new__

    ·__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供 ·__ne...

  • __new__和__init__

    __new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供 __new_...

  • Python常用魔术方法总结

    __init__:构造函数 触发时机:实例化对象之后自动触发,在__new__之后执行。实例化对象其实包含两步,1...

  • Python中的__init__/__new__/__call_

    __new__创建类的实例,用于控制新实例的创建 __init__ 用于new创建实例后,初始化实例变量 __ca...

  • Python中的__new__(cls) 以及 单例模式

    __new__(cls)方法 __new__(cls)必须要有一个参数cls,代表着要实例化的类,而且必须要有返回...

网友评论

    本文标题:Python的__new__进行构造类的实例化

    本文链接:https://www.haomeiwen.com/subject/aimujctx.html