带有参数和更改类型的Python装饰器类

时间:2011-06-13 08:40:40

标签: python int decorator

我只是在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而不是可调用的。

有什么想法吗?

编辑:请不要再回答问题已解决,我明白我做错了什么。它是一个拼写错误,我定义的函数不是类

2 个答案:

答案 0 :(得分:2)

您的returns()函数不返回任何内容。你的意思是把它变成一个班级吗?

答案 1 :(得分:2)

也许你想要替换

def returns(object):

通过

class returns(object):
相关问题