gpt4 book ai didi

python - 如何检查函数是否用特定的装饰器装饰?

转载 作者:行者123 更新时间:2023-12-03 20:31:26 25 4
gpt4 key购买 nike

我想检查一个 Python 函数是否被装饰,并将装饰器参数存储在函数 dict 中。这是我的代码:

from functools import wraps

def applies_to(segment="all"):
def applies(func):
@wraps(func)
def wrapper(*args, **kwargs):
func.func_dict["segment"] = segment
print func.__name__
print func.func_dict
return func(*args, **kwargs)
return wrapper
return applies

但看起来字典丢失了:
@applies_to(segment="mysegment")
def foo():
print "Some function"


> foo() # --> Ok, I get the expected result
foo
{'segment': 'mysegment'}

> foo.__dict__ # --> Here I get empty result. Why is the dict empty?
{}

最佳答案

好的,感谢 user2357112的线索,我找到了答案。即使有进步

from functools import wraps

def applies_to(*segments):
def applies(func):
func.func_dict["segments"] = list(segments)
@wraps(func)
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
return applies

谢谢!

关于python - 如何检查函数是否用特定的装饰器装饰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45516189/

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