我对 Python 还很陌生,并且一直在学习装饰器。在搞砸了 Flask 之后,我正在尝试编写一些代码来模拟他们的路由处理程序/装饰器,只是为了了解装饰器(带参数)是如何工作的。
在下面的代码中,一旦脚本运行,路由装饰器似乎会调用自己。我的问题是,当我运行这个脚本时,它怎么可能app.route()
被调用,这里到底发生了什么?请注意,我不会index()
直接在任何地方调用我的函数。
# test.py
class Flask(object):
def __init__(self, name):
self.scriptname = name
def route(self, *rargs, **kargs):
args = list(rargs)
if kargs:
print(kargs['methods'])
def decorator(f):
f(args[0])
return decorator
app = Flask(__name__)
@app.route("/", methods = ["GET","PUT"])
def index(rt):
print('route: ' + rt)
上面在我的终端上打印了这个:
$ python test.py
['GET', 'PUT']
route: /
任何见解将不胜感激。