Python3 魔法方法:构造和析构
1、魔法方法的特点:
魔法方法总是被双下划线包围例如:__init__
2、__new__(cls,[....])
__new__是在对象实例化后所调用的第一个方法,与其他方法不同他的第一个参数不时self而是cls因为,而其他参数会直接传递给__init__方法.
注意:__new__方法的主要任务是返回一个实例对象,通常是cls这个类实例化的对象,当然你也可以返回其他对象
开方法主要在改写一些内置函数的时候使用
#定义一个Nint类型,传入参数为字符串的时候返回该字符串所有字符的ASCII码之和 class Nint(int): def __new__(cls, arg=0): if isinstance(arg, str): total = 0 for each in arg: total += ord(each) arg = total return int.__new__(cls, arg)
3、__init__(self,[....])(构建函数)
__init__方法在类被实例化之后会被自动调用,可以重写这个方法为对象指定初始化方案
__init__方法无返回,即返回值必须为None
下面是一种错误的做法
class Test: def __init__(self, x, y): return x + y
4、__del__(self)(析构函数)
在对象被销毁(注:垃圾回时机制回收这个对象时才会被调用)时会自动调用这个函数
class A: def __del__(self): print('正在调用__del__函数') >>> a=A() >>> b=a >>> c=a >>> del c >>> delb >>> del b >>> del a#到这里才删除了对象a 正在调用__del__函数