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运用于数据分析的简单教程
Mar 27 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
python字典的遍历3种方法详解
Aug 10 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
python文件操作的简单方法总结
Nov 07 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 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代码运行时间查看类代码分享
2011/08/06 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
JS中操作JSON总结
2020/12/06 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
angular.js实现购物车功能
2017/10/23 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
对于Python中RawString的理解介绍
2016/07/07 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
python3.8下载及安装步骤详解
2020/01/15 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
岗位职责范本
2013/11/23 职场文书
美食节策划方案
2014/05/26 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python