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 深入理解yield
Sep 06 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
Python生成短uuid的方法实例详解
May 29 Python
python之文件读取一行一行的方法
Jul 12 Python
Python rstrip()方法实例详解
Nov 11 Python
Python常见数据类型转换操作示例
May 08 Python
python+pygame实现坦克大战
Sep 10 Python
python异步Web框架sanic的实现
Apr 27 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
python为什么要安装到c盘
Jul 20 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
Python函数学习笔记
2008/10/07 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python怎么删除缓存文件
2020/07/19 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
个人实用简单的自我评价
2013/10/19 职场文书
酒店服务与管理毕业生求职信
2013/11/02 职场文书
如何写毕业求职自荐信
2013/11/06 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
给女朋友的道歉信
2014/01/10 职场文书
小学生新学期寄语
2014/01/19 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
公路绿化方案
2014/05/12 职场文书