• 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__  作用:想不想将对象当成函数用。
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    移植OpenSSH到arm手记
    编译内核模块找不到内核头文件解决办法
    多线程编程
    多线程编程
    MFC中如何清空CListBox
    Windows文件自删除的两种方法
    【转】显示一个打开文件夹的对话框,并得到用户选择的目录:
    【转】UpdateData()函数
    Windows命名规则
    CListControl如何删除所有子项
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14422510.html
Copyright © 2020-2023  润新知