python 动态获取当前运行的类名和函数名的方法

 更新时间:2014年04月15日 10:50:58   作者:  
这篇文章主要介绍了python 动态获取当前运行的类名和函数名的方法,分别介绍使用内置方法、sys模块、修饰器、inspect模块等方法,需要的朋友可以参考下

一、使用内置方法和修饰器方法获取类名、函数名

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使用try-except捕获与处理异常的实现方法

    Python使用try-except捕获与处理异常的实现方法

    在Python中,try-except 语句是用于捕获和处理异常的主要工具,当程序运行过程中发生错误时,try-except 结构可以有效地防止程序崩溃,并允许开发者为错误提供适当的解决方案,接下来,我们将详细探讨 try-except 的使用方式,需要的朋友可以参考下
    2024-11-11
  • 使用python进行二维码生成和识别的实现

    使用python进行二维码生成和识别的实现

    在Python中,生成和识别二维码可以使用不同的库来实现,最常用的库包括 qrcode 和 pyzbar,以下是如何使用这些库来生成和识别二维码的示例,感兴趣的小伙伴可以参考阅读下
    2024-09-09
  • python 使用enumerate()函数详解

    python 使用enumerate()函数详解

    enumerate()是python的内置函数,将一个可遍历iterable数据对象,组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中,这篇文章主要介绍了python 使用enumerate()函数,需要的朋友可以参考下
    2022-11-11
  • PYTHON正则表达式 re模块使用说明

    PYTHON正则表达式 re模块使用说明

    正则表达式是一个复杂的主题。本文能否有助于你理解呢?那些部分是否不清晰,或在这儿没有找到你所遇到的问题?如果是那样的话,请将建议发给作者以便改进
    2011-05-05
  • python模拟鼠标拖动操作的方法

    python模拟鼠标拖动操作的方法

    这篇文章主要介绍了python模拟鼠标拖动操作的方法,实例分析了Python鼠标操作及键位操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 教你使用Python连接oracle

    教你使用Python连接oracle

    今天教各位小伙伴怎么用Python连接oracle,文中附带非常详细的图文示例,对正在学习的小伙伴们很有帮助哟,需要的朋友可以参考下
    2021-05-05
  • python 实现人和电脑猜拳的示例代码

    python 实现人和电脑猜拳的示例代码

    这篇文章主要介绍了python 实现人和电脑猜拳的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python3.x中安装web.py步骤方法

    python3.x中安装web.py步骤方法

    在本篇文章里小编给大家分享的是关于python3.x中安装web.py步骤方法,需要的朋友们可以学习下。
    2020-06-06
  • 利用Pycharm断点调试Python程序的方法

    利用Pycharm断点调试Python程序的方法

    今天小编就为大家分享一篇利用Pycharm断点调试Python程序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 详解Python的整数是如何实现的

    详解Python的整数是如何实现的

    本文我们来聊一聊Python的整数,我们知道Python的整数是不会溢出的,换句话说,它可以计算无穷大的数,只要你的内存足够,它就能计算。但问题是,Python底层又是C实现的,那么它是怎么做到整数不溢出的呢?本文就来详细说说
    2022-11-11

最新评论