什么是自省?

在日常生活中,自省(introspection)是一种自我检查行为。

在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。

  • 说的更简单直白一点:

    自省就是面向对象的语言所写的程序在运行时,能够知道对象的类型。简单一句就是,运行时能够获知对象的类型。

  • 例如:

    python, buby, object-C, c++都有自省的能力,
    这里面的c++的自省的能力最弱,只能够知道是什么类型,而像python可以知道是什么类型,还有什么属性。

最好的理解自省就是通过例子: [Type introspectionhttps://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Type_introspection

](https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Type_introspection)这里是各种编程语言中自省(introspection)的例子。链接里面满满的干货

Python 中比较常见的自省(introspection)机制(函数用法)有: dir(),type(), hasattr(), isinstance(),通过这些函数,我们能够在程序运行时得知对象的类型,判断对象是否存在某个属性,访问对象的属性。

dir()

dir() 函数可能是 Python 自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则 dir() 返回当前作用域中的名称。让我们将 dir() 函数应用于 keyword 模块,并观察它揭示了什么:

>>> import keyword
>>> dir(keyword)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'iskeyword', 'kwlist', 'main']
123

type()

type() 函数有助于我们确定对象是字符串还是整数,或是其它类型的对象。它通过返回类型对象来做到这一点,可以将这个类型对象与 types 模块中定义的类型相比较:

>>> type(42)
<class 'int'>
>>> type([])
<class 'list'>
1234

hasattr()

对象拥有属性,并且 dir() 函数会返回这些属性的列表。但是,有时我们只想测试一个或多个属性是否存在。如果对象具有我们正在考虑的属性,那么通常希望只检索该属性。这个任务可以由 hasattr() 和 getattr() 函数来完成.

>>> hasattr(id, '__doc__')
True
12

isinstance()

可以使用 isinstance() 函数测试对象,以确定它是否是某个特定类型或定制类的实例:

>>> isinstance("python", str)
True
12

参考原址:https://www.cnblogs.com/ArsenalfanInECNU/p/9110262.html

Python自省机制相关推荐

  1. python的几种重要机制(垃圾回收机制,猴子补丁,反射机制,自省机制)

    python垃圾回收机制 垃圾回收机制要解决的问题 内存泄漏 悬空指针 引用计数 定义 环形链表中所存放数据的相同点和不同点 无法解决循环引用问题 标记清除 原理: 存在查找活动对象效率低下的问题 隔 ...

  2. 面试开发岗位被面试官问及:Python自省是什么?What一脸懵逼?

    欢迎各位小哥哥小姐姐阅读本<小生>的文章,对大家学习有帮助,请点赞加关注哦!!! 您的点赞和关注将是我持续更新的动力呢.v 有不懂的问题可以私聊我哦! Python自省是什么 自省就是自我 ...

  3. python反射机制_详解python之反射机制

    一.前言 deff1():print('f1')deff2():print('f2')deff3():print('f3')deff4():print('f4') a= 1 test.py impor ...

  4. Python自省(反射) 与 inspect 模块

    Python 自省指南:https://www.ibm.com/developerworks/cn/linux/l-pyint/ From:https://my.oschina.net/taisha/ ...

  5. Python自省(反射)指南 1

    Python自省(反射)指南 在笔者,也就是我的概念里,自省和反射是一回事,当然其实我并不十分确定一定以及肯定,所以如果这确实是两个不同的概念的话,还请多多指教 :) 转载请注明作者.出处并附上原文链 ...

  6. python自省与反射

    DAY 5. python自省 这是很久之前写的,当时对自省和反射的概念没理解,学习Java以后多了一点理解,自省是获取对象的能力,反射是操纵对象的能力,python中使用getattr()和seta ...

  7. python异常机制

    python异常处理机制 1.1python的内置异常 当我们在运行代码的时候一旦程序报错,就会终止运行,并且有的异常是不可避免的,但是我们可以对异常进行捕获,防止程序终止. python的内置异常是 ...

  8. Python培训教程分享:Python异常机制

    ​ 在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来.本期Python培训教 ...

  9. 【Python数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  10. python导入机制及importlib模块

    文章目录 写在篇前 import 关键字 先导概念 namespace & scope Module & Packages module packages regular packag ...

最新文章

  1. 利用lrz、lsz工具在linux与windows之间传输文件
  2. P3932 浮游大陆的68号岛
  3. python导入自定义文件_python引入导入自定义模块和外部文件的实例
  4. 没有可用软件包 jenkins。_Jenkins分布式构建与并行构建
  5. python创建数组的方法_numpy创建array的方法汇总
  6. 2015 8月31 工作计划与执行
  7. 径向基(Radial basis function)神经网络、核函数的一些理解
  8. linux下安装opencv4.4.0
  9. sqlite 迁移 oracle,Oracle 数据导入 Sqlite
  10. 全球网速最快的地方在哪里?中国固定宽带网速增长超美国!
  11. Java集合不能存放基本数据类型,只存放对象的引用
  12. 网络蚂蚁(netants) v1.25 中文版 绿色
  13. 花生壳诊断“域名指向IP与服务器不一致”的解决方法
  14. 电偶极子的MATLAB场模拟
  15. ARM Uboot经历——Uboot初始化代码解析
  16. Android TV系列 TV APP分析(一)
  17. 中科院计算所寒武纪团队DianNao系列论文导读
  18. 刚为阿里巴巴体检,平安保险的offer来了
  19. 科学家用iPS细胞研究阿尔兹海默氏病最新进展
  20. mapset——C++

热门文章

  1. 计算机抖音链接,抖音怎么开始电脑直播
  2. 运算放大器stb仿真与闭环增益备忘
  3. 【数据分析与科学计算可视化】numpy 和 matplotlib库总结
  4. 人到中年,沉默寡言(深度好文)
  5. 谷雨,微信公众号图文排版必备素材集锦
  6. BT3下载 与 BT3 U盘版制作
  7. esp8266智能开关灯制作教程
  8. lro gro_斯威夫特:Gro吟M
  9. 华为路由器用Linux开发,华为路由交换设备配置综合实验(实验六合一)
  10. c语言文献,关于计算机C语言的外文文献