Python 对象特殊方法:(一)对象创建与销毁
2017-01-17 11:57
351 查看
对象创建与销毁
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__()方法只有存在某种关键资源管理问题的情况下才会定义,如释放锁定或关闭连接时。相关文章推荐
- Python中的对象行为与特殊方法(一)对象的创建与销毁
- 【Effective Java】Ch2_创建销毁对象:Item1_考虑用工厂方法替代构造函数
- 图形对象的创建(常用图形对象的创建方法及特殊属性)
- 创建和销毁对象 第一条:考虑用静态工厂方法代替构造器
- 7. 【创建和销毁对象】避免使用终结方法finalize
- python 函数是可调用对象和特殊方法__call__
- python创建只读属性对象的方法(ReadOnlyObject)
- [Python源码学习]之对象创建与销毁
- 创建和销毁对象之用静态工厂方法代替构造器
- Effective Java 进阶之路第一章(创建和销毁对象) 第一条(静态工厂方法)
- 创建和销毁对象(1)——考虑用静态工厂方法代替构造器
- Effective Jave 创建和销毁对象 7.避免使用终结方法
- Python网络编程2:创建套接字和套接字对象的内建方法
- 【Effective Java】Ch2_创建销毁对象:Item7_避免使用finalize方法
- 学习effective java-1创建和销毁对象之静态工厂方法
- python对象特殊方法列表
- 4. 【创建和销毁对象】通过私有化构造方法强化不可实例化的能力
- spring(IOC) 对象创建时机、对象作用域scope、对象的初始化方法和销毁方法的调用、spring容器总结
- Python对象特殊方法及其用法演示
- JAVA创建和销毁对象的方法