python的自省机制

一、定义:

(1)自省
自省就是面向对象的语言所写的程序在运行时,能够知道对象的类型。
简单一句就是,运行时能够获知对象的类型。
(2)自省机制
自省机制通过函数实现,是一个函数。

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

二、python比较常见的自省机制

dir(),type(), hasattr(), isinstance()

(1)dir()
dir() 函数可能是 Python 自省机制中最著名的部分了。
它返回传递给它的任何对象的属性名称经过排序的列表。
如果不指定对象,则 dir() 返回当前作用域中的名称。
让我们将 dir() 函数应用于 keyword 模块,并观察它揭示了什么:

import csv
print(dir(csv))
#输出:
G:\PycharmProjects\GUI_Pro\venv\Scripts\python.exe 
G:/PycharmProjects/GUI_Pro/test/test.py
['Dialect', 'DictReader', 'DictWriter', 'Error', 'OrderedDict', 'QUOTE_ALL', 'QUOTE_MINIMAL', 'QUOTE_NONE', 'QUOTE_NONNUMERIC', 'Sniffer', 'StringIO', '_Dialect', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', 'excel', 'excel_tab', 'field_size_limit', 'get_dialect', 'list_dialects', 're', 'reader', 'register_dialect', 'unix_dialect', 'unregister_dialect', 'writer']

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

print(type(csv))
print(type(33))
#输出:
<class 'module'>
<class 'int'>

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

print(hasattr(csv, '__doc__'))

#输出:
True

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

isinstance("python", str)

#输出:
True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值