Python自省机制
什么是自省?
在日常生活中,自省(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自省机制相关推荐
- python的几种重要机制(垃圾回收机制,猴子补丁,反射机制,自省机制)
python垃圾回收机制 垃圾回收机制要解决的问题 内存泄漏 悬空指针 引用计数 定义 环形链表中所存放数据的相同点和不同点 无法解决循环引用问题 标记清除 原理: 存在查找活动对象效率低下的问题 隔 ...
- 面试开发岗位被面试官问及:Python自省是什么?What一脸懵逼?
欢迎各位小哥哥小姐姐阅读本<小生>的文章,对大家学习有帮助,请点赞加关注哦!!! 您的点赞和关注将是我持续更新的动力呢.v 有不懂的问题可以私聊我哦! Python自省是什么 自省就是自我 ...
- python反射机制_详解python之反射机制
一.前言 deff1():print('f1')deff2():print('f2')deff3():print('f3')deff4():print('f4') a= 1 test.py impor ...
- Python自省(反射) 与 inspect 模块
Python 自省指南:https://www.ibm.com/developerworks/cn/linux/l-pyint/ From:https://my.oschina.net/taisha/ ...
- Python自省(反射)指南 1
Python自省(反射)指南 在笔者,也就是我的概念里,自省和反射是一回事,当然其实我并不十分确定一定以及肯定,所以如果这确实是两个不同的概念的话,还请多多指教 :) 转载请注明作者.出处并附上原文链 ...
- python自省与反射
DAY 5. python自省 这是很久之前写的,当时对自省和反射的概念没理解,学习Java以后多了一点理解,自省是获取对象的能力,反射是操纵对象的能力,python中使用getattr()和seta ...
- python异常机制
python异常处理机制 1.1python的内置异常 当我们在运行代码的时候一旦程序报错,就会终止运行,并且有的异常是不可避免的,但是我们可以对异常进行捕获,防止程序终止. python的内置异常是 ...
- Python培训教程分享:Python异常机制
在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来.本期Python培训教 ...
- 【Python数据结构】 抽象数据类型 Python类机制和异常
这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...
- python导入机制及importlib模块
文章目录 写在篇前 import 关键字 先导概念 namespace & scope Module & Packages module packages regular packag ...
最新文章
- 利用lrz、lsz工具在linux与windows之间传输文件
- P3932 浮游大陆的68号岛
- python导入自定义文件_python引入导入自定义模块和外部文件的实例
- 没有可用软件包 jenkins。_Jenkins分布式构建与并行构建
- python创建数组的方法_numpy创建array的方法汇总
- 2015 8月31 工作计划与执行
- 径向基(Radial basis function)神经网络、核函数的一些理解
- linux下安装opencv4.4.0
- sqlite 迁移 oracle,Oracle 数据导入 Sqlite
- 全球网速最快的地方在哪里?中国固定宽带网速增长超美国!
- Java集合不能存放基本数据类型,只存放对象的引用
- 网络蚂蚁(netants) v1.25 中文版 绿色
- 花生壳诊断“域名指向IP与服务器不一致”的解决方法
- 电偶极子的MATLAB场模拟
- ARM Uboot经历——Uboot初始化代码解析
- Android TV系列 TV APP分析(一)
- 中科院计算所寒武纪团队DianNao系列论文导读
- 刚为阿里巴巴体检,平安保险的offer来了
- 科学家用iPS细胞研究阿尔兹海默氏病最新进展
- mapset——C++