【发布时间】:2020-09-05 03:25:52
【问题描述】:
我想定义一个装饰器,该装饰器将通过作为装饰器参数给出的名称注册类。我可以从 stackoverflow 和其他来源中阅读许多示例,这些示例展示了如何派生此类(棘手的)代码,但是当适应我的需要时,我的代码无法产生预期的结果。代码如下:
import functools
READERS = {}
def register(typ):
def decorator_register(kls):
@functools.wraps(kls)
def wrapper_register(*args, **kwargs):
READERS[typ] = kls
return wrapper_register
return decorator_register
@register(".pdb")
class PDBReader:
pass
@register(".gro")
class GromacsReader:
pass
print(READERS)
此代码生成一个空字典,而我希望字典包含两个条目。你知道我的代码有什么问题吗?
【问题讨论】:
标签: python-3.x python-decorators