【发布时间】:2012-02-16 19:57:51
【问题描述】:
我有一个装饰器,目前要求使用它的每个函数都有几个参数,arg1、arg2 和 arg3。它工作正常。
但是其中一个 args 特别让人觉得无关紧要,因为函数并不真的希望将它作为输入,例如对于像
@sql_decorator
def user_records(table, user, limit):
"sql to select records from ' + table + ' with user=%s limit %s" % (user, limit)
user 和 limit 作为输入是有意义的,但 table 没有意义,因为调用者永远无法控制它。感觉很陌生。
有没有办法做这样的事情:
@sql_decorator
def user_records(user, limit):
"sql to select records from table with user=%s limit %s" % (user, limit)
然后让装饰器通过查找表的实例并将其更改为正确的值来更改 sql?
【问题讨论】:
-
我不明白你在问什么。你的装饰师是做什么的?您要编写另一个函数,还是将
table设为具有默认值的关键字参数? -
我希望你不要真的那样构建你的 SQL。您的示例容易受到 SQL 注入的攻击。
-
我不明白,你给出的例子接收相同的参数。
-
抱歉,第二个函数中的表 arg 让我不清楚我在尝试什么。更新了。请让我知道它是否仍然令人困惑。 ...不,这只是一个示例 sql。
-
这仍然令人困惑。 user_records 是你的装饰器吗?你用什么装饰它?我们可以看看你目前拥有的代码吗?