编程语言
首页 > 编程语言> > Python高阶--魔术方法

Python高阶--魔术方法

作者:互联网

在Python中,像__init__这类双划线开头和结尾的方法,都称之为魔术方法

作用:在创建对象的时候,自动调用__init__来创建对象,进行初始化设置,魔术方法都是Python内部定义,一般个人不要去定义__init__这种双划线开头的方法

 

构造和初始化

  新定义一个类,初始化这个类,__init__方法并不是第一个被调用的方法,还有一个__new__的方法,两个一起构成了‘构造函数’

  __new__是用来创建类并返回这个类的实例,而__init__只是将传入的参数来初始化该实

 

   

  

 

   在对象生命周期调用结束时,__del__方法会被调用,可以将__del__理解为‘构析函数’,如打开一个文件后,调用__del__执行close操作

 

单例模式

  类每次实例化的时候都会创建一个新的对象,要是类只能被实例化一次的话就叫做单例模式

  实现单例模式的思路:

  1、定义一个类属性:__instance,来标记该类是否创建过对象

  2、在__new__方法中对类属性进行判断

    -- 没有创建过对象,则创建一个对象(保存起来),并且修改类属性的值

    -- 创建过 了,就将之前创建的return

  

 

 

__str__方法和__repr__方法

  内置函数str转换成一个对象时,触发对象对应__str__的方法

  内置函数print处理对象时,触发对象对应__str__的方法

  内置函数format处理对象时,触发对象对应__str__的方法

  内置函数repr处理对象时,触发对象对应__repr__的方法

触发规律:

  1、使用str函数或者print打印对象时会优先触发str方法,没有定义str方法就会找repr方法,要是都没有就会去找父类的str方法

  2、使用repr方法或者交互环境下输入变量,会先找自身的repr方法,若没有,就去找父类的repr

 

__call__方法

  让类创建的对象,像函数一样被调用

  

 

   

 

 

一些基本的魔术方法

  

 

   

 

标签:__,Python,方法,repr,--,init,对象,str,高阶
来源: https://www.cnblogs.com/lili37/p/15814342.html