python笔记之特殊方法----__init__、__new__、__call___以及单例模式

 

 

    在类的特殊方法中,__init__、__new__、__call___这3个方法我们经常会用到,但是什么时候会调用以及调用的先后顺序是哪些,经常傻傻的分不清楚,下面就这3个方法详细讲述下。

   一、初识__init__、__new__、__call___

   __init__顾名思义是初始化方法,等于类的构造函数,当我们创建一个类的实例时,__init__方法是被默认调用的,题外话:(在引入一个包的时候,如:import packageXXX,如果不指定引入的是哪个模块,默认引入的是包中的__init__模块),、__new__方法是我们初始化实例的时候,为实例开辟内存空间的函数,__call___函数类似函数中的调用,在实例调用的时候会用到。

   二、现在验证下执行顺序

    

    执行结果:

    

    由此看出,在实例化的时候,首先调用__new__ 开辟一个内存空间,在执行__init__方法,初始化

    调用__call__方法是类似函数调用,实例()

    三、设计模式-单例模式

       多个实例会影响性能,当我们的适用场景可以用一个实例能够解决所有问题的时候,就可以采用单例模式

       如何实现单例模式:

       

       执行结果:

       

       可以看出两个实例的内存地址指向同一个地址

 

posted @ 2019-02-26 12:53  new000  阅读(493)  评论(0)    收藏  举报