魔法方法总结
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