zoukankan      html  css  js  c++  java
  • 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__  作用:想不想将对象当成函数用。
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    数据结构与算法之递归与调用栈
    Linux 压缩命令之tar和zip
    算法的时间复杂度—大O表示法
    Linux三大文本处理工具之awk
    Linux 排序命令之 sort, wc, uniq
    oracle性能优化之索引
    Linux三大文本处理工具之sed命令
    Linux三大文本处理工具之grep命令
    linux查看端口
    linux查看mac地址
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14422510.html
Copyright © 2011-2022 走看看