ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反射须知

2019-09-16 19:03:25  阅读:262  来源: 互联网

标签:__ 反射 classinfo 对象 object name 须知 属性


反射须知

isinstance & issubclass

  • isinstance(object, classinfo)

    如果 object 实参是 classinfo 实参的实例,或者是(直接、间接或 虚拟)子类的

    实例,则返回 true。如果 object 不是给定类型的对象,函数始终返回 false。如

    classinfo 是对象类型(或多个递归元组)的元组,如果 object 是其中的任何

    一个的实例则返回 true。 如果 classinfo 既不是类型,也不是类型元组或类型的

    递归元组,那么会触发 TypeError 异常。

  • issubclass(class, classinfo)

    如果 classclassinfo子类(直接、间接或 虚拟 的),则返回 true。

    classinfo 可以是类对象的元组,此时 classinfo 中的每个元素都会被检查。其他

    情况,会触发 TypeError 异常。


反射

主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。

  1. hasattr(object, name)

    该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回

    True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否

    有 AttributeError 异常来实现的。)

  2. getattr(object, name[, default])

    返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之

    一,则返回该属性的值。例如, getattr(x, 'foobar') 等同于 x.foobar。如

    果指定的属性不存在,且提供了 default 值,则返回它,否则触发

    AttributeError。

  3. setattr(object, name, value)

    此函数与 getattr() 两相对应。 其参数为一个对象、一个字符串和一个任意

    值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对

    象允许这种操作。 例如,setattr(x, 'foobar', 123) 等价于 x.foobar =

    123。

  4. delattr(object, name)

    setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的

    某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x,

    'foobar') 等价于 del x.foobar 。


类的内置方法

  1. __setattr__

    类中放置属性的方法

  2. __delattr__

    类中删除属性的方法

  3. __getattr__

    类中获取属性的方法

  4. __item__

    对象通过[] 中括号取值,赋值,删除值的时候,会调用

  5. __call__

    对象的调用 : 对象加括号会调用它

  6. __enter & __exit

    上下文管理器,本质

  7. __str & __repr

    一个是print输出的结果、一个是在交互式命令下直接写变量名的显示结果

标签:__,反射,classinfo,对象,object,name,须知,属性
来源: https://www.cnblogs.com/Du704/p/11528986.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有