• python学习笔记-面向对象进阶复习小结


    自省

    hasattr(obj,"属性")                     :obj.属性是否存在

    getattr(obj,"属性")                   :获取obj.属性,不存在则报错

    getattr(obj,"属性","默认值")     :获取obj.属性,不存在不报错,返回默认值

    setattr(obj,"属性,"属性的值")     :obj.属性=属性的值

    delattr(obj,"属性")                      : del obj.属性

    __getattr__,__setattr__,__delattr__

    obj点的方式去操作属性时触发的方法

    __getattr__     :     obj.属性                        不存在时触发

    __setattr__     :    obj.属性=属性的值         时触发

    __delattr__     :     del obj.属性                   时触发

    __getitem__,__setitem__,__delitem__

    obj[”属性“]的方式去操作属性时触发的方法

    __getitem__     :obj["属性"]                     时触发

    __setitem__     :obj["属性"]=属性的值     时触发

    __delitem__     :del obj["属性"]                时触发

    __get__,__set__,__delete__

    描述符就是一个新式类,这个类至少要实现上述三个方法的一个

    格式:

    class 描述符:
        def __get__():
            pass
        def __set__():
            pass
        def __delete__():
            pass
    
    class 类:
        name=描述符()
    
    obj=类()
    obj.name  #get
    obj.name="steven" #set
    del obj.name   #delete
    
    

    __getattribute__

    不管属性存在不存在都会触发运行

    当__getattribute__与__getattr__同时存在,只会执行__getattribute__,除非__getattribute__在执行过程中抛出AttributeError

    __del__

    当对象在内存中被释放时,自动触发执行

  • 相关阅读:
    java枚举常见用法
    redis初使用
    Linux上搭建svn资源库
    redis集群创建
    大数据学习之Hadoop运行模式
    集群时间同步
    ssh免密登录
    mvc项目问题清单以及解决方法
    Memcached分布式缓存初体验
    Asp.Net 一个请求的处理流程
  • 原文地址:https://www.cnblogs.com/steven223-z/p/12578480.html
Copyright © 2020-2023  润新知