zoukankan      html  css  js  c++  java
  • 复习1

    #自省、反射

    hasattr(obj,'属性')  # 判断obj.属性是否存在

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

    getattr(obj,'属性','默认值')   获取obj.属性的值,不存在则返回默认值

    setattr(obj,'属性','属性的值')   设置属性obj.属性=属性值

    delattr(obj,'属性')   删除obj.属性

    #  __getattr__、__setattr__、__delattr__   这几个和上面的没有任何关系,这几个是当寻找属性、设置和删除属性时才会触发。   

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

    __setattr__    当设置obj.属性时    会触发

    __delattr__    当删除obj.属性时    会触发

    #  __getitem__、__setitem__、__delitem__

    __getitem__   obj['key']   获取时触发

    __setitem__    obj[key] = value    时触发

    __delitem__    del  obj[key]    时触发

    # __get__、__set__、__delete__描述符

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

     1 class 描述符:
     2     def __get__(self, instance, owner):
     3         pass
     4     def __set__(self, instance, value):
     5         pass
     6     def __delete__(self, instance):
     7         pass
     8 class 类:
     9     name = 描述符()
    10 
    11 obj = 类()
    12 obj.name     #  触发描述符  get方法
    13 obj.name = 'egon '  # 触发set方法
    14 del obj.name     # 触发delete方法

    # __del__  析构方法

    垃圾回收后会触发此方法

    #  __getattribute__   调用类属性时才会触发

    不管属性存在与否都会触发

    只有当在__getattribute__ 抛出Attriibute异常时,才会触发__getattr__ 方法 

    #  __str__   方法   可以显示打印对象(实例),可以自定义信息 

     1 class Foo:
     2     def __str__(self):
     3         return '这是析构函数的__str__方法'
     4     def __repr__(self):
     5         return '这是析构函数的__repr__方法'
     6 
     7 f = Foo()
     8 print(f)
     9 输出:
    10 这是析构函数的__str__方法

    # __call__  对象加括号    就调用此方法

  • 相关阅读:
    cmd查看端口号是否占用
    重新安装安全狗以后,apchpe 启动不了。
    springcloud组件-eureka
    关于mybatis和spring整合后的一级缓存
    SpringCloud理解篇
    mycat的读写分离
    mycat的分库分表
    Linux下mysql服务器配置
    mycat理解
    linux配置mysql
  • 原文地址:https://www.cnblogs.com/ch2020/p/12454821.html
Copyright © 2011-2022 走看看