在Python中使用简单装饰器时出错

时间:2011-04-07 15:58:58

标签: python

def simple_decorator(f):
    def tmp(*args, **kwargs):
        res = f(*args, **kwargs)
        return res
    return tmp

@simple_decorator
class FirstClass():
    pass


@simple_decorator
class SecondClass(FirstClass):
    pass

我有错误:

File "1.py", line 16, in <module>
class SecondClass(FirstClass):
TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str

为什么?

2 个答案:

答案 0 :(得分:6)

你的装饰者返回一个函数,所以FirstClass是一个函数,而不是一个类;装饰器不需要返回与输入类型相同的对象。

答案 1 :(得分:0)

你的错误在于你正试图装饰一个班级。 检查PEP-3129