📜  Python中的代码自省

📅  最后修改于: 2020-05-05 05:39:49             🧑  作者: Mango

自省是一种在运行时确定对象类型的能力。Python中的所有内容都是一个对象。Python中的每个对象都可以具有属性和方法。通过自省,我们可以动态检查Python对象。代码自省用于检查类,方法,对象,模块,关键字并获取有关它们的信息,以便我们可以利用它。内省会揭示有关程序对象的有用信息。Python是一种动态的,面向对象的编程语言,它提供了巨大的自省支持。Python对自省的支持在整个语言中广泛深入。
Python提供了一些用于代码自省的内置函数。它们是:
1. type():此函数返回对象的类型。

# Python程序显示使用类型函数
import math
# 打印类型
print(type(math))
# 打印类型1
print(type(1))
# 打印类型为“ 1"
print(type("1"))
# rk的打印类型
rk =[1, 2, 3, 4, 5, "radha"]
print(type(rk))
print(type(rk[1]))
print(type(rk[5]))

输出:






2. dir():此函数返回与该对象关联的方法和属性的列表。

# Python程序显示使用dir()函数
import math
rk =[1, 2, 3, 4, 5]
# rk的打印方法和属性
print(dir(rk))
rk =(1, 2, 3, 4, 5)
# rk的打印方法和属性
print(dir(rk))
rk ={1, 2, 3, 4, 5}
print(dir(rk))
print(dir(math))

输出:

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

3. str():此函数将所有内容转换为字符串。

# Python程序显示使用str()函数
a = 1
print(type(a))
# 将整数转换为字符串
a = str(a)
print(type(a))
s =[1, 2, 3, 4, 5]
print(type(s))
# 将列表转换为字符串
s = str(s)
print(type(s))

输出:





4. id():此函数返回对象的特殊ID。

# Python程序显示使用id()函数
import math
a =[1, 2, 3, 4, 5]
# 打印
print(id(a))
b =(1, 2, 3, 4, 5)
# 打印b的ID
print(id(b))
c ={1, 2, 3, 4, 5}
# 打印C的ID
print(id(c))
print(id(math))

输出:

139787756828232
139787757942656
139787757391432
139787756815768

代码自省的方法

函数 描述
help() 它用于查找其他功能
hasattr() 检查对象是否具有属性
getattr() 返回属性的内容(如果有的话)。
repr() 返回对象的字符串表示形式
callable() 检查对象是否为可调用对象(函数)。
issubclass() 检查特定的类是否是另一个类的派生类。
isinstance() 检查对象是否是特定类的实例。
sys() 允许访问系统特定的变量和函数
__doc__ 返回有关对象的一些文档
__name__ 返回对象的名称。