我有这个简单的装饰器,它在装饰的方法上设置了属性mark='marked'
def mark(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
return fn(*args, **kwargs)
setattr(wrapper, 'mark', 'marked')
return wrapper
我在这样的类属性方法上使用它
class Car(object):
@property
@mark
def move(self):
return "move"
现在,由于Car.move
是一种属性方法,如何访问我创建的marked
属性?
>>> c = Car()
>>> getattr(c.move, 'mark')
AttributeError: 'str' object has no attribute 'mark'
由于c.move
在属性描述符上调用了__get__
方法,该方法返回一个字符串,因此该错误是有意义的。
有其他方法吗?