python 动态获取当前运行的类名和函数名的方法


Posted in Python onApril 15, 2014

一、使用内置方法和修饰器方法获取类名、函数名

python中获取函数名的情况分为内部、外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性

def a():pass
a.__name__

除此之外还可以:
getattr(a,'__name__')

尽管有些脱裤子放屁,总之,从外部获取的方法是非常灵活的。

有些同学需要从函数内部获取函数本身的名字,就需要用些技巧了。
1.使用sys模块的方法:

def a():
print sys._getframe().f_code.co_name

f_code和co_name可以参考python源码解析的pyc生成和命名空间章节。
2.使用修饰器的方法:
使用修饰器就可以对函数指向一个变量,然后取变量对象的__name__方法。
def timeit(func):
def run(*argv):
   print func.__name__
   if argv:
    ret = func(*argv)
   else:
    ret = func()
   return ret
return run
@timeit
def t(a):
print a 
t(1)

二、使用inspect模块动态获取当前运行的函数名

import inspect
def get_current_function_name():
    return inspect.stack()[1][3]
class MyClass:
    def function_one(self):
        print "%s.%s invoked"%(self.__class__.__name__, get_current_function_name())
if __name__ == "__main__":
    myclass = MyClass()
    myclass.function_one()

动态获取当前运行的函数名很方便,特别是对于一些debug系统来说
Python 相关文章推荐
浅谈python对象数据的读写权限
Sep 12 Python
python使用Tesseract库识别验证
Mar 21 Python
用于业余项目的8个优秀Python库
Sep 21 Python
python实现微信自动回复机器人功能
Jul 11 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
python中的错误如何查看
Jul 08 Python
python3中for循环踩过的坑记录
Dec 14 Python
Python+tkinter实现高清图片保存
Mar 13 Python
python使用百度翻译进行中翻英示例
Apr 14 #Python
python使用xauth方式登录饭否网然后发消息
Apr 11 #Python
python判断、获取一张图片主色调的2个实例
Apr 10 #Python
Python使用新浪微博API发送微博的例子
Apr 10 #Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 #Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 #Python
python实现随机密码字典生成器示例
Apr 09 #Python
You might like
php标签云的实现代码
2012/10/10 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
PDO::_construct讲解
2019/01/27 PHP
php报错502badgateway解决方法
2019/10/11 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
深入分析python 排序
2020/08/24 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
留学自荐信的技巧
2013/10/17 职场文书
自荐书格式
2013/12/01 职场文书
会计专业求职信
2014/08/10 职场文书
合理化建议书
2015/02/04 职场文书
居委会工作总结2015
2015/05/18 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB