__new__方法是真正的类构造方法,用于产生实例化对象,方法必须返回一个对象;
__init__方法是初始化方法,负责对实例化对象进行属性值初始化,此方法必须返回None;
__call__类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用;
__repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员;
del__销毁对象,del x并不直接调用x.del(),前者会将 x 的引用计数减一,而后者仅会在 x 的引用计数变为零时被调用,并且定义了__del()的实例无法被Python的循环垃圾收集器收集,所以尽量不要自定义__del__()。一般情况下,__del __()不会破坏垃圾处理器;
在python中实现了__iter__方法的对象是可迭代的,实现了__next__()方法的对象是迭代器;
getattr:当读取对象的某个属性时,python会自动调用__getattr__()方法;
setattr:当使用赋值语句对属性进行设置时,python会自动调用__setattr__()方法;