最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:38:29
文档

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

python动态获取当前运行的类名和函数名的方法:一、使用内置方法和修饰器方法获取类名、函数名 python中获取函数名的情况分为内部、外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 代码如下:def a():passa.__name__除此之外还可以: 代码如下:getattr(a,'__name__
推荐度:
导读python动态获取当前运行的类名和函数名的方法:一、使用内置方法和修饰器方法获取类名、函数名 python中获取函数名的情况分为内部、外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 代码如下:def a():passa.__name__除此之外还可以: 代码如下:getattr(a,'__name__


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

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动态获取当前运行的类名和函数名的方法:一、使用内置方法和修饰器方法获取类名、函数名 python中获取函数名的情况分为内部、外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 代码如下:def a():passa.__name__除此之外还可以: 代码如下:getattr(a,'__name__
推荐度:
标签: 方法 使用 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top