python面向对象–内置方法(魔术方法)
常用的魔术方法
魔术方法就是一个类\对象中的方法,和普通方法唯一的不同是:普通方法需要调用,而魔术方法是在特定时刻自动触发。
1、__init__
初始化方法
触发时机:初始化对象时触发(不是实例化触发,但和实例化在一个操作中)
参数:至少有一个self,接收对象
返回值:无
作用:初始化对象的成员
注意:使用该方式初始化的成员都是直接写入对象当中,类中无法具有
2、__new__
实例化方法
触发时机:在实例化时触发
参数:至少有一个clsj接收当前类
返回值:必须返回一个对象实例
作用:实例化对象
注意:实例化对象是Object类底层实现,其他类继承了Object类的__new__
才能够实现实例化方法
__new__
的真正用途:向内存申请地址,之后调用__init__
给对象进行初始化复制
3、__del__
析构方法
触发时机:当对象没有用(没有任何变量引用)的时候触发
参数:一个self
返回值:无
作用:使用完对象后回收资源
注意:del不一定会触发当前方法,只有当前对象没有任何变量接收时才会触发
#1、对象赋值
p = Person()
p1 = p
# 说明:p和p1共同指向同一个地址
#2、删除地址的引用
del p1
#3、查看对地址的引用次数
import sys
sys.getrefcount(p)
#4、当一块空间(对象)没有了任何引用,默认执行__del__
4、__str__
print实例时打印出来的内容,不定义可以调用,重新定义后则可以定制打印内容
5、__cal__
调用对象的魔术方法
触发时机:将对象当做函数调用时触发 对象()
参数:至少一个self接收对象,其余根据调用时的参数决定。
返回值:根据自定义的情况而定