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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
django rest framework之请求与响应(详解)
Nov 06 Python
手把手教你python实现SVM算法
Dec 27 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
python中强大的format函数实例详解
Dec 05 Python
python3实现猜数字游戏
Dec 07 Python
基于python监控程序是否关闭
Jan 14 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Python利器openpyxl之操作excel表格
Apr 17 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python k-近邻算法实例分享
2014/06/11 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
使用python实现BLAST
2018/02/12 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python上selenium的弹框操作实现
2020/07/13 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
大学学年自我鉴定
2013/10/28 职场文书
招聘单位介绍信
2014/01/14 职场文书
产品开发计划书
2014/04/27 职场文书
社区矫正工作方案
2014/06/04 职场文书
争先创优个人总结
2015/03/04 职场文书
市场部岗位职责范本
2015/04/15 职场文书
中职班主任培训心得体会
2016/01/07 职场文书