如何在 Python 里装饰一个属性装饰器?
这是我写的一个根据doc-string输出日志的
def log_attr(func):
'''根据函数的doc-string输出日志'''
doc = func.__doc__
if func.__class__.__name__ == 'property':
@property
def warpper(self, *args, **kwargs):
data = {}
data.update({'type_name': self.type_name})
if self.__class__.__name__ == 'People':
data.update({'name': self.name})
elif re.match(r"Question|Column|Collection|Topic", self.__class__.__name__):
data.update({'name': self.title})
elif re.match(r"Answer|Article", self.__class__.__name__):
data.update({'name': self.author.name})
log(doc.format(**data))
return func.__get__.__call__(self, *args, **kwargs)
return warpper
当我把他用在一个属性时
@log_attr
@iter #返回一个生成器
@propery #避免 aaa()()的尴尬
def aaa(x):
pass
显示AttributeError,对象找不到该属性
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论