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映射拆分操作符用法实例
May 19 Python
python中__slots__用法实例
Jun 04 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
Python socket实现简单聊天室
Apr 01 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
python基于http下载视频或音频
Jun 20 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
Python中使用ipython的详细教程
Jun 22 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
使用php判断网页是否gzip压缩
2013/06/25 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
js实现简单页面全屏
2019/09/17 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
新学期标语
2014/06/30 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
JavaScript函数柯里化
2021/11/07 Javascript
MySQL中order by的执行过程
2022/06/05 MySQL