我正在使用以下惰性属性装饰器来惰性初始化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()
的行为。有没有办法可以实现这种行为?也许通过另一个装饰器?