首页 / 知识
python之访问对象的元数据
2023-11-12 13:42:00
当你对一个你构造的对象使用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相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
怎么把数据库导入navicat?
怎么把数据库导入navicat?,软件,信息,密码,管理,数据库,服务,电脑,按钮,类型,文件,Navicat是一个强大的数据库管理工具,它可以连接和管理多种数python是面向对象还是面向过程的
python是面向对象还是面向过程的,数据,代码,基础,形态,培训,术语,设计,对象,过程,语言,Python虽然是解释型语言,但从设计之初就已经是一门面向深圳python培训课程哪家靠谱?
深圳python培训课程哪家靠谱?,深圳,人工智能,培训,检测,分析,实战,行业,转型,时间,体系,Python语言简单、易学、易读、易维护,学习成本和时间相Python的模块
Python的模块,代码,名字,模块,系统,函数,变量,智能,名称,地方,多地,模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块Python之数据库游标对象详解
Python之数据库游标对象详解,软件,代码,一致,培训,数据库,游标,对象,方法,事务,操作,常用数据库:MySQL、Oracle、SQLite但是包嵌入到Python中Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,python的数据类型
python的数据类型,数字,较大,数据,培训,变量,表示,字符串,赋值,常量,小数,1.整型Python可以处理任意大小的整数,当然包括负整数,在程序中的表示Python中的变量和数据类型
Python中的变量和数据类型,数据,变量,培训,地址,字符串,列表,数据类型,方法,字典,函数,python是一门弱数据类型的语言,变量不需要声明即可使用Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观Python 模块之输入不可见的密码
Python 模块之输入不可见的密码,密码,系统,情况,公共,位置,信息,电子,网上,认证,培训,密码对程序员来说尤其重要。你不应该在不加密的情况下