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实现12306火车票查询器
Apr 20 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
CentOS7安装Python3的教程详解
Apr 10 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
django ORM之values和annotate使用详解
May 19 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
numpy实现RNN原理实现
Mar 02 Python
OpenCV-Python实现油画效果的实例
Jun 08 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防止盗链防止迅雷下载的方法
2017/04/26 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
跟老齐学Python之类的细节
2014/10/13 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python实现车牌识别的示例代码
2019/08/05 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
入党申请人的自我鉴定
2013/12/01 职场文书
三个儿子教学反思
2014/02/03 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
品德评语大全
2014/05/05 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
礼仪培训心得体会
2016/01/22 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书