您的位置:首页 > 其它

构造和析构

2017-07-16 11:34 127 查看
1.魔法方法总是被双下划线包围,例如: __init__

2.魔法方法是面向对象的Python的一切

3.魔法方法的魔力体现在它们总能够在适当的时候被自动调用

初始化实例对象时,真正被调用的是__new__(cls[,...]) ,此函数在__init__之前被调用,如果这个new函数有参数的话,这些参数会原封不动的传给init方法。new方法需要有一个实例对象作为返回值 ,通常返回cls的实例对象,也可以返回其他类的实例对象。一般这个new方法不需要被重写,但是当继承的是一个不可变类而这个类需要被修改的时候,就需要重写这个方法了。

例子中的CapStr继承了不可改变的类str,不可能在init方法中对它进行修改,所以要在new中进行替换,转换后调用新的string的new

python也提供了析构器, __del__(self)  但是注意,del x 不等于 x.__del__()  ,这个__del__(self) 相当于是垃圾回收机制,当没有任何变量引用这个对象的时候,python会自动调用垃圾回收机制 ,这时候才会调用__del__(self)方法。 只用当所有的引用都被del之后,才会启动垃圾回收机制,真正的调用del,销毁这个对象,如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: