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()

posted @ 2021-10-20 17:02  太晓  阅读(8)  评论(0编辑  收藏  举报