python获取方法的装饰方法_python – 在一个方法上得到装饰器名称的内省?
如果你可以改變你調用裝飾器的方式
class Foo(object):
@many
@decorators
@here
def bar(self):
pass
至
class Foo(object):
@register(many,decos,here)
def bar(self):
pass
那么你可以這樣注冊裝飾:
def register(*decorators):
def register_wrapper(func):
for deco in decorators[::-1]:
func=deco(func)
func._decorators=decorators
return func
return register_wrapper
例如:
def many(f):
def wrapper(*args,**kwds):
return f(*args,**kwds)
return wrapper
decos = here = many
class Foo(object):
@register(many,decos,here)
def bar(self):
pass
foo=Foo()
這里我們訪問裝飾器的元組:
print(foo.bar._decorators)
# (, , )
在這里,我們只打印裝飾器的名稱:
print([d.func_name for d in foo.bar._decorators])
# ['many', 'decos', 'here']
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python获取方法的装饰方法_python – 在一个方法上得到装饰器名称的内省?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql命令导入存储过程报错_mysq
- 下一篇: ubuntu16 php mysql_U