【发布时间】:2015-04-18 07:22:42
【问题描述】:
我有一个 python 类,Something。我想创建一个方法borrowed,它会检查Something 的实例变量blue 是否为None。
如何在实例方法上创建@check_none 以便它检查实例变量?在装饰器函数中使用self 不起作用;(
例子:
def check_token(func):
def inner(*args, **kwargs):
if self.token == None:
raise ValueError
else:
return func(*args, **kwargs)
return inner
class Something(object):
def __init__(self, token=None):
self.token = token
@check_token
def testfunction(self):
print "Test"
产生global name 'self' is not defined 错误。
【问题讨论】:
-
尝试编辑。谢谢。
-
看,您忘记将
self添加到inner()函数签名中。不要忘记在func()调用中传递它。或者,使用self = args[0]。
标签: python oop python-2.7 decorator python-decorators