美文网首页python
Python的自省机制

Python的自省机制

作者: 我爱学python | 来源:发表于2020-01-10 14:42 被阅读0次

什么是自省?

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

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

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

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

最好的理解自省就是通过例子: Type introspection 这里是各种编程语言中自省(introspection)的例子(这个链接里的例子很重要,也许你很难通过叙述理解什么是introspection,但是通过这些例子,一下子你就可以理解了)

回到Python,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']

type()

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> type(42)
<class 'int'>
>>> type([])
<class 'list'>

hasattr()

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

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

isinstance()

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

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

相关文章

  • Python常见的基础面试题(day02)

    1.Python的自省机制,以及比较常见的自省机制(函数用法) 什么是自省自省就是程序在运行的时候可以明确的知道对...

  • Python的自省机制

    什么是自省? 在日常生活中,自省(introspection)是一种自我检查行为。 在计算机编程中,自省是指这种能...

  • Python 反射自省机制

    反射就是通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动。 首先介绍四...

  • 4-9 Python自省机制

    通过dict来查类的属性结构

  • python属性描述符

    1.对象的自省机制 自省是通过一定的机制查询到对象的内部结构 dir(obj) dir(obj)可以获取一个对象所...

  • python学习一

    1 python 如何管理内存 对象引用计数机制,垃圾回收机制,内存池机制 一。对象引用机制 python内部引用...

  • python内存管理机制

    Python内存管理机制 Python内存管理机制主要包括以下三个方面: 引用计数机制 垃圾回收机制 内存池机制 ...

  • python 的锁、信号量和事件

    在python使用Lock 机制 在python使用Semaphore机制 1.信号量机制比锁机制多了一个计数器,...

  • 学习时避免错觉和记忆扭曲

    前面的章节里我们提到了人类大脑有两套分析机制:没头脑的“机制1”和爱自省的“机制2”,并且要用“机制2”做好...

  • Python3学习二——变量、数据类型、运算符(1)

    声明:本章用到的type, id, dir, help这些Python内置的函数,都是Python的自省函数,非...

网友评论

    本文标题:Python的自省机制

    本文链接:https://www.haomeiwen.com/subject/gxopactx.html