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中enumerate的用法实例解析
Aug 18 Python
jupyter安装小结
Mar 13 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
Flask框架单例模式实现方法详解
Jul 31 Python
python3中TQDM库安装及使用详解
Nov 18 Python
Django中template for如何使用方法
Jan 31 Python
python flappy bird小游戏分步实现流程
Feb 15 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
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
python中实现栈的三种方法
2020/12/19 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
门卫岗位职责说明书
2014/08/18 职场文书
安全检查汇报材料
2014/12/26 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
走进毛泽东观后感
2015/06/04 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
详解Python中的for循环
2022/04/30 Python