问题描述
|
我只是用python和装饰器一起玩耍并享受经验,对我来说,装饰器类比装饰器函数更干净,所以我一直在玩这种设计
def returns(object):
\"\"\"Enforces return to a specific type\"\"\"
def __init__(self,returns):
self.returns = returns
def __call__(self,func):
def wrapped(*args):
out = func(*args)
return self.returns(out)
return wrapped
@returns(int)
def test():
return \'4\'
上面的代码的问题是它返回
------------------------------------------------------------
Traceback (most recent call last):
File \"\",line 1,in <module>
File \"\",line 122,in runfile
execfile(filename,glbs)
File \"\",line 33,in <module>
@returns(int)
TypeError: \'nonetype\' object is not callable
我想知道为什么我可以像函数一样调用int(),它具有可调用的方法,但是在这里将其表示为nonetype而不是可调用的。
有任何想法吗?
编辑:请没有更多的答案,问题已经解决,我明白我做错了。它是一个错字和我定义一个函数而不是一个类
解决方法
您的
returns()
函数不返回任何内容。你是说要上课吗?
, 也许您想更换
def returns(object):
通过
class returns(object):