我只是在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而不是可调用的。
有什么想法吗?
编辑:请不要再回答问题已解决,我明白我做错了什么。它是一个拼写错误,我定义的函数不是类答案 0 :(得分:2)
您的returns()
函数不返回任何内容。你的意思是把它变成一个班级吗?
答案 1 :(得分:2)
也许你想要替换
def returns(object):
通过
class returns(object):