python中类的魔术方法

#创建类对象时,自动执行的魔术方法顺序:__new__->__init__
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__  作用:想不想将对象当成函数用。
posted @ 2021-02-20 17:47  kevin.l  阅读(93)  评论(0编辑  收藏  举报