【发布时间】:2020-02-10 23:49:36
【问题描述】:
我有 2 个类用作装饰器
class A:
"""This is a decorator"""
pass
class B:
"""This is also a decorator"""
pass
还有我想返回 A 或 B 的第三类
class C:
def a(func):
return A
def b(func):
return B
@C.a
def some_func(some_arg):
pass
@C.b
def other_func(some_arg):
pass
有没有可能,如果有,如何实现?
更新: 问题在于,在创建装饰器时,会在创建过程中执行“call”。我想访问一些稍后设置的配置。所以我基本上我想做的是返回包装器,它返回包装器。
class C:
def __call__(func):
def wrapper(*args, **kwargs):
# Do something with global data
return func(*args, **kwargs)
return wrapper
【问题讨论】:
-
它是 python,几乎任何事情都可能以一种或另一种方式实现。你在这里写的方式有什么问题?
-
看样子只需要使用
@C.a()而不是@C.a
标签: python python-3.x python-decorators