构造和析构

xiaoxiao2021-02-28  30

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,销毁这个对象,如下:

转载请注明原文地址: https://www.6miu.com/read-249997.html

最新回复(0)