Python中基于类的修饰符-哪个PEP定义语法和语义?
我打开政治公众人物的完整列表:并通过Python中基于类的修饰符-哪个PEP定义语法和语义?,python,decorator,python-decorators,pep,Python,Decorator,Python Decorators,Pep,我打开政治公众人物的完整列表:并通过decorator关键字进行搜索 标题中有两个具有此关键字的政治公众人物: 但是他们没有提到任何关于基于类的装饰器 我想知道基于类的修饰符何时以及如何引入Python 更新我谈论的是: class NoArgsClassDecorator: def __init__(self, f): self.f = f def __call__(self): print('Inside %s.__call__()
decorator
关键字进行搜索
标题中有两个具有此关键字的政治公众人物:
class NoArgsClassDecorator:
def __init__(self, f):
self.f = f
def __call__(self):
print('Inside %s.__call__(). You call %s()' % (self.__class__, self.f.__name__))
self.f()
print('Inside %s.__call__(). We finish %s()' % (self.__class__, self.f.__name__))
@NoArgsClassDecorator
def hello():
print('hello')
从一开始就包括了基于类的装饰器;引用政治公众人物第318条: 新语法应该
- 适用于任意包装,包括用户定义的可调用项
通过在类上定义一个函数,让您用实例替换函数,也可以使实例可调用,这一事实长期以来一直是该语言的一部分,而且从来都不需要在PEP中调用 “基于类的装饰器”是什么意思?如果你指的是类上的装饰者,那就是你链接的第二个。如果您指的是用作装饰器的类或类实例,那么这是允许任意调用作为装饰器的自然结果。没有人说过它必须是一个真正的函数;类是可调用的。@MartijnPieters谢谢,我不知道什么是可调用的+1.