千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:广州千锋IT培训  >  技术干货  >  python之访问对象的元数据

python之访问对象的元数据

来源:千锋教育
发布人:xqq
时间: 2023-11-07 18:57:57

当你对一个你构造的对象使用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/

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python 列表元素的增加

2023-11-07

Python 决策树算法思想

2023-11-07

Python 枚举

2023-11-07

最新文章NEW

python 抽象类和抽象接口

2023-11-07

Python 分类技术

2023-11-07

Python C代码统计工具代码的效果验证

2023-11-07

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>