Python 对象特殊方法:(一)对象创建与销毁

对象创建与销毁

Python中已双下划线开头和结尾的方法是特殊方法,分别对应对象的一些特殊行为。看过《参考手册》对于对象行为与特殊方法的系统解释,这里整理一下笔记。
这里主要介绍python中对象创建、初始化和销毁等行为对应的特殊方法。

__new__(cls, [, *args [, **kwargs]]) #对象创建行为
__init__(self, [, *args [, **kwargs]]) #对象初始化行为
__del__(self) #对象销毁行为

__new__()方法

__new__()方法对应实例的创建,需要返回类对象。

__init__()方法

__init__()方法对应对象的初始化,不需要返回。

__del__()方法

对象销毁时调用,用于释放资源。

总结

__new__()与__init__()区别

有一个明显的区别是传参和返回:

__new__()第一个参数是cls, __init__()第一个参数是self,__new__()与__init__()的其他参数必须保持一致;
__new__方法一般需要返回类的对象,__init__没有返回。

创建与初始化的区别还是很好理解的。《参考》中给出一个例子。

调用A(args)创建对象时,会转换为以下步骤:

 #python
 x = A.__new__(A, args)
 if isinstance(x, A): x.__init__(args)

这个步骤很好的解释了:如果__new__不返回对象,则__init__不会被调用。

__new__()与__del__()使用

__new__()与__del__()方法一般很少需要用户定义。__new__()方法通常只定义在元类或继承自不可变类型之一(证书、字符串、元组等)的用户定义对象中。__del__()方法只有存在某种关键资源管理问题的情况下才会定义,如释放锁定或关闭连接时。

发布了46 篇原创文章 · 获赞 10 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章