class Person:
# 魔术方法
‘‘‘
__init__:初始化魔术方法
触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中)
‘‘‘
def __init__(self):
pass
‘‘‘
__new__:实例化的魔术方法(不建议重写)
触发时机:在实例化时触发
‘‘‘
def __new__(cls, *args, **kwargs):
pass
‘‘‘
__call__:对象调用方法
触发时机:将对象当成函数使用的时候,会默认调用此函数中内容
‘‘‘
def __call__(self, *args, **kwargs):
pass
‘‘‘
__del__:delete的缩写,析构魔术方法(不建议重写)
触发时机:当对象没有用(没有任何变量引用)的时候触发
1. 对象赋值
p = Person()
p1 = p
说明:p和p1共同指向同一个地址
2. 删除地址的引用
del p1 删除p1对地址的引用
3. 查看对地址的引用次数:
import sys
sys.getrefcount(p)
4. 当一块空间没有了任何引用,默认执行__del__
ref = 0
‘‘‘
def __del__(self):
pass
‘‘‘
__str__:
触发时机:打印对象名的时候,自动触发去调用__str__里面的内容
注意:一定要在__str__里面添加return,return 后面内容就是打印对象看到的内容
‘‘‘
def __str__(self):
pass
总结:
重点:
__init__(构造方法,创建完空间之后调用的第一个方法),__str__
了解:
__new__ 作用 开辟空间
__del__ 作用 没有指针引用的时候会调用。99%不需要重写
__call__ 作用:想不想将对象当成函数用。
原文:https://www.cnblogs.com/kevin1220/p/14422510.html