【发布时间】:2012-04-27 21:46:00
【问题描述】:
我有一个像下面这样的装饰器。
def myDecorator(test_func):
return callSomeWrapper(test_func)
def callSomeWrapper(test_func):
return test_func
@myDecorator
def someFunc():
print 'hello'
我想增强这个装饰器以接受下面的另一个参数
def myDecorator(test_func,logIt):
if logIt:
print "Calling Function: " + test_func.__name__
return callSomeWrapper(test_func)
@myDecorator(False)
def someFunc():
print 'Hello'
但是这段代码给出了错误,
TypeError: myDecorator() 只接受 2 个参数(给定 1 个)
为什么函数没有自动传递?如何将函数显式传递给装饰器函数?
【问题讨论】:
-
balki:请避免使用 boolean 作为参数,这不是 gd 方法并降低代码的可读性
-
@KitHo -- 这是一个布尔标志,所以使用布尔值是正确的方法。
-
@KitHo -- 什么是“gd”?它“好”吗?
标签: python python-2.7 python-decorators