zoukankan      html  css  js  c++  java
  • python 中的__new__方法

    1.有关__new__方法的介绍

    __new__方法调用在构造方法构造实例之前,即在__init__方法执行之前,我们可以这样理解,他的作用是决定是否适用这个__iint__方法来构造实例,但是需要注意,__new__只出现在新式类中,在经典类中没有这个方法.本质上__new__是一个静态方法.

    2.有关__new__的使用

    上面我们介绍__new__方法,下面我们来看一下他是如何使用的

    class User(object):
        def __init__(self,name):
            self.name = name
            print("__init__方法被调用")
    
        @staticmethod
        def __new__(cls, *args, **kwargs):
            print("__new__方法被调用")
            return object.__new__(cls)
    
    if __name__ == '__main__':
        u1 = User("name")

    上面代码的执行结果如下:

    通过上面的结果我们可以知道,__new__方法执行在__init__方法之前

    我们在来解释下他的用法:

    1)__new__方法必须有参数cls,cls指的是当前正在实例化的类

    2)__new__必须有返回值,返回的是实例,如果是使用当前类构造的实例,可以用object.__new__(cls),也可以用父类名.__new__(cls)

    3)__init__方法的参数self其实就是__new__方法返回的实例对象,在这个__init__方法中还可以对这个实例进行其他的操作,比如添加一些属性等

    注:实际上在新式类中我们不是必须要重写这个__new__方法,python是默认调用这个类的直接父类的__new__方法来构造实例的

    通常这个__new__方法用在单例模式的实现上

     
    人生没有白走的路,每一步都算数 恐惧是万恶之源
  • 相关阅读:
    Mysql集群
    Redis集群
    Python3 实现数据读写分离设计
    PHP Session的优化使用
    防盗链与token运用
    PHP与REDIS
    优化设计提高sql类数据库的性能
    Nodejs密集型CPU解决方案
    可重入和线程安全
    信号处理函数编写规则
  • 原文地址:https://www.cnblogs.com/niusha/p/10618493.html
Copyright © 2011-2022 走看看