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__  对象加括号    就调用此方法

  • 相关阅读:
    iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了
    如何在获取不到第一响应者控件时移除键盘
    类名与字符串的互转
    clang format 官方文档自定义参数介绍(中英文)
    clang format 自定义样式常用参数说明
    Xcode 设置代码不自动换行
    企业项目如何打包成.ipa文件
    多个过渡动画效果
    压栈过渡动画
    底部不规则导航栏2
  • 原文地址:https://www.cnblogs.com/ch2020/p/12454821.html
Copyright © 2011-2022 走看看