python面向对象--内置方法(魔术方法)

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接收对象,其余根据调用时的参数决定。
返回值:根据自定义的情况而定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值