假设我有这门课:
class Foo:
@classmethod
def some_decorator(cls, ...):
...
然后我创建了一个使用父类修饰器的子类:
class Bar(Foo):
@Foo.some_decorator(...)
def some_function(...)
...
我该如何消除
Foo.
在装饰名字之前?以下代码不起作用:
class Bar(Foo):
@some_decorator(...)
def some_function(...)
...
我相信这是可能的,因为
sly
图书馆就是这么做的。
看看他们的例子:
from sly import Lexer, Parser
class CalcLexer(Lexer):
...
@_(r'\d+')
def NUMBER(self, t):
t.value = int(t.value)
return t
...
如你所见,你可以输入
@_(...)
而不是
@Lexer._(...)
.
他们是如何做到这一点的?