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

问题描述

| 我只是用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):