这是我写的一个根据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,对象找不到该属性