自省——指在运行时判断一个对象的类型的能力。
一、 dir
dir是自省的最重要的函数之一。
它返回一个个列表,列出了一个对象所拥有的属性和方法。
例子:
my_list={
1,2}
dir(my_list)
输出:
['__and__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__iand__',
'__init__',
'__init_subclass__',
'__ior__',
'__isub__',
'__iter__',
'__ixor__',
'__le__',
'__len__',
'__lt__',
'__ne__',
'__new__',
'__or__',
'__rand__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__ror__',
'__rsub__',
'__rxor__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__xor__',
'add',
'clear',
'copy',
'difference',
'difference_update',
'discard',
'intersection',
'intersection_update',
'isdisjoint',
'issubset',
'issuperset',
'pop',
'remove',
'symmetric_difference',
'symmetric_difference_update',
'union',
'update']
上面的自省给了我们该列表对象所有的方法的名字。如果运行dir()不传入参数,则会返回当前作用域所有名字。
二、type和id
type函数返回一个对象的类型。如:
print(type(""))
print(type([]))
print(type({
}))
输出:
<class 'str'>
<class 'list'>
<class 'dict'>
id()函数返回任意不同种类对象的唯一ID,如:
name="hello"
print(id(name))
输出:
51702304
三、inspect模块
该模块提供了许多有用的函数,来获取活跃对象的信息。比如:
查看一个对象的成员:
import inspect