python之访问对象的元数据
当你对一个你构造的对象使用dir()时,可能会发现列表中的很多属性并不是你定义的。这些属性一般保存了对象的元数据,比如类的__name__属性保存了类名。大部分这些属性都可以修改,不过改动它们意义并不是很大;修改其中某些属性如function.func_code还可能导致很难发现的问题,所以改改name什么的就好了,其他的属性不要在不了解后果的情况下修改。
接下来列出特定对象的一些特殊属性。另外,Python的文档中有提到部分属性不一定会一直提供,下文中将以红色的星号*标记,使用前你可以先打开解释器确认一下。
1.准备工作:确定对象的类型
在types模块中定义了全部的Python内置类型,结合内置方法isinstance()就可以确定对象的具体类型了。
isinstance(object,classinfo):
检查object是不是classinfo中列举出的类型,返回布尔值。classinfo可以是一个具体的类型,也可以是多个类型的元组或列表。
types模块中仅仅定义了类型,而inspect模块中封装了很多检查类型的方法,比直接使用types模块更为轻松,所以这里不给出关于types的更多介绍,如有需要可以直接查看types模块的文档说明。本文第3节中介绍了inspect模块。
2.模块(module)
__doc__:文档字符串。如果模块没有文档,这个值是None。
*__name__:始终是定义时的模块名;即使你使用import..as为它取了别名,或是赋值给了另一个变量名。
*__dict__:包含了模块里可用的属性名-属性的字典;也就是可以使用模块名.属性名访问的对象。
__file__:包含了该模块的文件路径。需要注意的是内建的模块没有这个属性,访问它会抛出异常!
importfnmatchasm
printm.__doc__.splitlines()[0]#Filenamematchingwithshellpatterns.
printm.__name__#fnmatch
printm.__file__#/usr/lib/python2.6/fnmatch.pyc
printm.__dict__.items()[0]#('fnmatchcase',)
3.类(class)
__doc__:文档字符串。如果类没有文档,这个值是None。
*__name__:始终是定义时的类名。
*__dict__:包含了类里可用的属性名-属性的字典;也就是可以使用类名.属性名访问的对象。
__module__:包含该类的定义的模块名;需要注意,是字符串形式的模块名而不是模块对象。
*__bases__:直接父类对象的元组;但不包含继承树更上层的其他类,比如父类的父类。
printCat.__doc__#None
printCat.__name__#Cat
printCat.__module__#__main__
printCat.__bases__#(,)
printCat.__dict__#{'__module__':'__main__',...}
2.3.实例(instance)
实例是指类实例化以后的对象。
*__dict__:包含了可用的属性名-属性字典。
*__class__:该实例的类对象。对于类Cat,cat.__class__==Cat为True。
3printcat.__dict__
printcat.__class__
printcat.__class__==Cat#True
以上内容为大家介绍了python之访问对象的元数据,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。http://www.mobiletrain.org/

相关推荐HOT
更多>>
如何使用Pandas处理Excel?
如何使用Pandas处理Excel?做过行政或者人事,或者对此有过了解的小伙伴,一定对下发各个部分的表有着非常深刻的印象,最常见的就是需要我们将一...详情>>
2023-11-14 07:43:15
python中np.insert()函数的使用方法
python中np.insert()函数的使用方法在numpy数组操作中,np.append()方法可以在每行每列的最后添加数据,但其位置是规定的,那如果想要指定添加...详情>>
2023-11-14 05:06:13
SVM在python中的原理如何理解?
SVM在python中的原理如何理解?在python中除了编程化的知识点外,对于数学方法的算法也有所涉及,SVM就是一种很好地体现。我们学习过数学中的坐...详情>>
2023-11-14 04:30:04
python处理绝对路径和相对路径函数有哪些?
python处理绝对路径和相对路径函数有哪些?绝对路径和相对路径是什么?绝对路径:从根文件夹开始,Windows系统以盘符(C:)作为根文件夹,OSX或Lin...详情>>
2023-11-14 03:33:02热门推荐
如何使用python any()判断多元素?
沸如何使用Pandas处理Excel?
热python函数中的参数有哪些?
热python中pygal模块如何使用?
新Python的excel处理操作
python中doctest库是什么?
python中series是什么意思
python中np.insert()函数的使用方法
SVM在python中的原理如何理解?
Python描述符中有哪三种方法?
python处理绝对路径和相对路径函数有哪些?
python单继承和多继承如何定义?
python封装中的私有如何理解?
python模块引入的三种方式
技术干货






