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 相关文章推荐
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python实现自动登录
Sep 17 Python
Python subprocess库的使用详解
Oct 26 Python
在Python中定义一个常量的方法
Nov 10 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
Django配置文件代码说明
Dec 04 Python
python plotly画柱状图代码实例
Dec 13 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
python如何建立全零数组
Jul 19 Python
pytorch实现线性回归以及多元回归
Apr 11 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
类的另类用法--数据的封装
2006/10/09 PHP
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python实现中文分词FMM算法实例
2015/07/10 Python
python删除列表内容
2015/08/04 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python常用库推荐
2016/12/04 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
python select.select模块通信全过程解析
2017/09/20 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
幼儿园开学寄语
2014/04/03 职场文书
同居协议书范本
2014/04/23 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书