魔法方法总结

魔法方法总结

python有太多的魔法方法了,每个魔法方法都有自己的作用,如果不做总结时间一长就忘了,方便需要的时候来看看,那就做一个总结吧。

1   __init__

对象初始化时候调用的,不是真正的构造方法,构造方法是new方法,然后再调用init方法。

2  __del__

这个方法就是在实例化对象销毁的时候调用,类似C++的析构函数。不写这个方法也是会自动在实例化对象生命周期结束的时候自动调用的。

3.  __str__

这个方法,可以实现打印实例对象,打印的结果就是这个方法的返回值。同时在django序列化器的时候将某个外键字段设置为 StringRelatedFiled时候序列化的结果就是这个函数返回的结果。

4  __call__

这个方法,可以在调用实例对象时可以像调用函数一样调用。调用的就是这个函数。

5.  __enter__

说句实话,这会我在写这个方法的时候已经忘了这个方法是干什么的了,赶紧去看一下,哦,原来是实现上下文资源的管理。这个方法和下面的方法配套使用一个是开启上下文管理时执行这个函数,例如在使用数据库的时候,我们调用这个函数获取游标对象,然后在关闭数据库的时候我们调用下面的魔法方法来关闭游标。所以下面的方法是结束上下文管理的时候调用的。目前我的理解这个方法是基于with关键字来使用的。

6. __exit__

上面已经解释了,就不啰嗦了。

7. __new__

这个方法是真正的构造方法,相当于C++的构造方法,返回的是实例化对象的地址,我们重写这个new方法,完成实例化对象的创建,单例模式的实现就是靠重写new方法,当实例化对象已经存在时,我们不会再实例化对象,直接返回已经实例化对象的地址就行了。
https://www.cnblogs.com/zhouyixian/p/11129347.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值