python的自省函数 python 函数self

什么是python中的自省自省就是程序运行时能够知道对象的类型,比如type()/isinstance()/hasattr()这种函数
python语言中的内建函数dir()是干啥用的?。?/h2>dir() 函数
尽管查找和导入模块相对容易,但要记住每个模块包含什么却不是这么简单 。您并不希望总是必须查看源代码来找出答案 。幸运的是,Python 提供了一种方法,可以使用内置的 dir() 函数来检查模块(以及其它对象)的内容 。
dir() 函数可能是 Python 自省机制中最著名的部分了 。它返回传递给它的任何对象的属性名称经过排序的列表 。如果不指定对象,则 dir() 返回当前作用域中的名称
Python自省与反射这个也是python彪悍的特性.
自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.简单一句就是运行时能够获得对象的类型.比如type(),dir(),getattr(),hasattr(),isinstance().
反射机制就是在运行时,动态的确定对象的类型,并可以通过字符串调用对象属性、方法、导入模块 , 是一种基于字符串的事件驱动
通过源码注释我们知道,它返回对象是否具有指定名称的属性 。而且它是通过调用getattr并捕获AttributeError异常来判断的 。就像上面的属性调用,我们就可以使用hasattr(a, "test")来判断,通过源码注释我们也可以思考一下,eval这种是不是也可以实现这种方法呢?
但是这种方式是有缺陷的,因为test输出了两次,因为我们调用了两次test(),这跟我们想要的效果不一样 。如果用hasattr呢,这个函数就不会在判断的时候调用一次了 。
有了判断属性是否存在的函数 , 那么就得有获取属性的函数了.
从源码注释我们就能知道获取object对象的名为name的属性,想到与object.name,如果提供了default参数,那么当属性不存在的时候,就会返回默认值 。同样是上面的例子:
从例子中我们可以看出,hasattr并没有调用test函数 , 而且getattr获取到的是函数对象,也没有调用它,通过我们主动执行func()才执行了a.test()函数,这样相比于exec和eval就灵活了许多 。
判断和获取属性有了,那么设置属性也是需要的.
【python的自省函数 python 函数self】关于python的自省函数和python 函数self的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读