Допустим, у есть просто декоратор:
def if_no_data(f):
def wrapper(self, *args, **kwargs):
if not self.data:
return f(self, *args, **kwargs)
return wrapper
Суть его работы проста - проверить на пустоту свойство объекта. Отлично, а если нужно чтобы декоратор работал как с асинхронными, так и с синхронными функциями?
Что-то такое выглядит очень странно, да и вряд ли работать будет.
def if_no_data(f):
async def wrapper(self, *args, **kwargs):
if not self.data:
result = f(self, *args, **kwargs)
try:
return await result
except ValueError:
return result
return wrapper