from flask import Flask
app = Flask(__name__)
@app.route("/")
def show_helloworld():
return "hello, world"
app.run()
我能不能类似 @app.route 的形式实现如下的定义
@menu('菜单名字', parent_menu='父菜单名字')
class menuItem(object):
pass
python 的强大另人心生敬畏,请教各位高人,如何在不使用数据库的情况下,只读取源码实现菜单的动态生成
1
mhycy 2016-02-02 16:50:57 +08:00 1
问题问的是装饰器还是动态菜单生成?
如果是代码生成菜单,完全可以用字典来实现一个 如果问的是装饰器,这种调用形式记忆中是不可用,实际可以试试。 |
2
zanpen2000 OP @mhycy 怪我问的不清楚,我是想说,如何像 Flask 那样,发现被装饰对象,读取被装饰对象的信息,然后根据这些信息组合成菜单
|
3
zanpen2000 OP 我承认问题问的有点轴,其实在装饰器内部就可以干这个事情,但是我想在第三方代码比如另外的模块里实现这个功能
|
4
aisk 2016-02-02 16:56:05 +08:00 1
|
5
aisk 2016-02-02 16:57:58 +08:00
Python2.6 之后 class 也能上 decorator
|
6
zanpen2000 OP @aisk 大概就是这个意思,但我想在其他模块中去发现,而不是在装饰器内实现
|
7
aisk 2016-02-02 17:03:59 +08:00
不太明白,其他模块指什么?
|
8
zanpen2000 OP @aisk 你看,装饰器方法只有在被装饰的方法被调用时才会运行,但是我想用另外一个.py 文件(模块)去发现这些被特定装饰器装饰的类或者方法,然后将已经发现的这些被装饰的类或者方法组织起来,形成一个菜单树
|
9
zanpen2000 OP @aisk 这样,可以说是主动发现吧,就是用一个方法去检查发现所有被特定装饰器装饰了的对象,然后做点事情
|
10
wenbinwu 2016-02-02 17:09:38 +08:00 1
<script src="https://gist.github.com/kylewu/7e2d95c2f6c5574159d1.js"></script>
|
11
zanpen2000 OP @wenbinwu 仔细拜读,请收下小白的膝盖
|
12
zanpen2000 OP 看来还是看书看的少,一些 python 的特性在这段代码里都有运用,组合起来产生神奇的效果
|
13
aisk 2016-02-02 17:37:06 +08:00 1
|
14
hahastudio 2016-02-02 17:39:10 +08:00 1
|