如果您可以编写函数来实现装饰器,则应首选它。但是并非所有装饰器都可以轻松地编写为一个函数-例如,当您要存储一些内部状态时。
class counted(object): """ counts how often a function is called """ def __init__(self, func): self.func = func self.counter = 0 def __call__(self, *args, **kwargs): self.counter += 1 return self.func(*args, **kwargs)@counteddef something(): passsomething()print something.counter
我见过人们(包括我自己)经过荒唐的努力,只用函数编写装饰器。我仍然不知道为什么,一个班级的开销通常可以忽略不计。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)