Я использую следующий ленивый декоратор свойств для ленивой инициализации кадров данных pandas:
def lazy_property(fn):
'''Decorator that makes a property lazy-evaluated.
'''
attr_name = '_lazy_' + fn.__name__
@property
def _lazy_property(self):
if not hasattr(self, attr_name):
print('getting db')
setattr(self, attr_name, fn(self))
return getattr(self, attr_name)
return _lazy_property
Я использую его так:
class Data:
@lazy_property
def _SOME_DATAFRAME(self):
return pd.read_csv(...)
Я хочу реализовать поведение такчто я могу как-то сохранить изменения в ленивых экземплярах данных.В идеале я хотел бы создать поведение, подобное self.__SOME_DATAFRAME.save()
.Есть ли способ, которым я могу реализовать это поведение?Может быть, через другого декоратора?