我正在尝试学习装饰器。 我理解了它的概念,现在正在尝试实现它。
这里是我编写的代码
代码很简单。它只是检查传递给int
的参数是否为整数。
def wrapper(func):
def inner():
if issubclass(x,int): pass
else: return 'invalid values'
return inner()
@wrapper
def add(x,y):
return x+y
print add('a',2)
出现错误,提示“全局名称 'x' 未定义”。我知道它在inner
下未定义,但不知道如何纠正此代码。我错在哪里?
isinstance()
,我会使用type(x)
而不是x.__class__
。 - Martijn Pietersdef wrapper(x,y): if issubclass(x.__class__, int): return func(x, y) else: return 'invalid values'
- python-codertype(x)
比使用x.__class__
更好。已修复。 - slothwrapper
用作装饰器时,它将使用包装函数作为第一个参数进行调用。 - slothdef inner(x, *args, **kwargs):
和return func(x, *args, **kwargs)
。 - Alfe