魔术方法:
在Python中,所有以“_ _”双下划线包裹起来的方法,都被统称“魔术方法”。
1. __new__
对象初始化:
先执行__new__(cls)——分配内存空间,并返回构建好的对象的地址,若不返回地址,则后续的__init__不会被执行。
__init__(self)——为构建好的对象赋予初始值,object.__new__(cls)的地址即__init__(self)函数中self的地址。
2.__del__
从内存中清除对象的时候,对象会默认执行的方法
(1)调用类且所有程序执行完毕,释放内存时。
(2)执行del指令删除指向类的所有对象时。只有当指向对象的所有对象都被删除的时候,对象的空间才会被释放。
3. __call__将对象当作函数执行的时候会被默认调用
class Fight:
def __call__(self, *args, **kwargs):
print("__call__方法被调用了")
f = Fight()
f(实际参数)
4.__str__
(1)返回值必须为字符串。打印对象的时候,默认会被调用__str__,打印内容是返回的字符串。
(2)使用str(对象)后,默认会被调用__str__。
5.__repr__
返回值必须为字符串,打印可变容器中的对象时会默认调用__repr__,打印内容是返回的字符串。