在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__方法
让类创建的对象,像函数一样被调用
一些基本的魔术方法