Python 反射 备查
# 对象类型
type(object)
# 对象属性及方法
dir(object)
# 对象属性和属性值的字典
vars(object)
# 方法的参数名
function.__code__.co_varnames
# 方法的参数个数
function.__code__.co_argcount
# 对象的属性和对应值
for key,value in object.__dict__.items():
print(key,value)
# 判断一个对象 obj 里是否有对应的 name_str 字符串的方法
hasattr(obj,name_str)
# 根据字符串去获取 obj 对象里的对应方法的内存地址
getattr(obj,name_str)
# 相当于 obj.y=z
setattr(obj,"y",z)
# 删除属性
delattr(obj,name_str)
frame
https://www.bilibili.com/list/watchlater?bvid=BV1iB4y1S7nT&oid=597545584
import inspect
from objprint import op
def f():
frame = inspect.currentframe()
# frame 的属性
op(frame, honor_existing=False, depth=2)
# 调用当前函数的函数的名称
print(frame.f_back.f_code.co_name)
# 调用当前函数的函数的局部变量
print(frame.f_back.f_locals)
# 被调用处所在的文件及行号
print(frame.f_back.f_code.co_filename)
print(frame.f_back.f_lineno)
def g():
f()