gpt4 book ai didi

python - 对 python 修饰方法的内省(introspection)

转载 作者:行者123 更新时间:2023-11-30 23:07:21 26 4
gpt4 key购买 nike

我需要对 python 2.7 中的修饰方法进行一些内省(introspection)。通常我使用getattr(my_module, 'my_method')但以下情况返回我的装饰器的外部函数。

my_module.py

def my_decorator(function):
def outer():
return function()
return outer

@my_decorator
def my_method():
pass

现在在 shell 中:

>>> import my_module
>>> getattr(my_module, 'my_method')
<function outer at 0x7f46958aa668>

我怎样才能真正获得我感兴趣的功能。

最佳答案

您可以通过内省(introspection) my_method.__closure__ 属性(在 Python3 中)或 my_method.func_closure (在 Python2 中)来访问未修饰的函数:

def my_decorator(function):
def outer():
print('outer')
return function()
return outer

@my_decorator
def my_method():
print('inner')

try:
# Python2
my_method.func_closure[0].cell_contents()
except AttributeError:
# Python3
my_method.__closure__[0].cell_contents()

打印

inner

关于python - 对 python 修饰方法的内省(introspection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com