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 相关文章推荐
wxPython 入门教程
Oct 07 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python应用文件读取与登录注册功能
Sep 23 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python语言中有算法吗
Jun 16 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 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截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
js a标签点击事件
2017/03/30 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
python条件和循环的使用方法
2013/11/01 Python
Python实现partial改变方法默认参数
2014/08/18 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python实现计算器功能
2019/10/31 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
资深财务管理人员自我评价
2013/09/22 职场文书
公司经理聘任书
2014/03/29 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
python实现层次聚类的方法
2021/11/01 Python