Python attrs类属性缓存延迟加载
我有这样的类:
我的目标是让attrs.asdict()能够通过遍历所有attrs并仅在实际上被要求进行序列化而不是在__init__上初始化magic属性时才能对FileObject进行序列化. 大多数时候,我真的不希望Magic库检查对象,因为它是昂贵的IO操作. 目标: b)具有magic属性只能在我实际调用它时实例化ImageMagic对象. c)仅一次,以便以后多次调用时可以重用. 有了这个,我宁愿使用Attrs库. 一般不干净的解决方案是使用@property和getter,getter检查私有_magic属性的存在,如果不存在,则进行加载. 然后以某种方式将属性注册到attrs库,以便进一步对其进行序列化. 这是一个实际解决方案的示例:
最佳答案
退后一步时的问题是序列化之一. Python的延迟加载方式确实是使用属性,因此您可以正确地做到这一点.
序列化(以及反序列化更是如此)的问题在这里和attrs错误跟踪器上都经常出现.问题在于,这是一个固有的复杂主题,这就是为什么我们决定在某些时候将其排除在范围之外,除非是简单的案例(即直接算词/阿斯普鲁特),而是让社区提出专门的库. 确实,您可以在attrs wiki中找到一堆用于[sd]序列化的库,但是我不知道它们中的任何一个是否都支持您的有效但前卫的用例. 也就是说,如果两者都不能满足您的需求,则可以使用attrs的extension machinery和元数据完全实现您的用例.我不确定您是否可以按自己的意愿执行命令,但是在最坏的情况下,您可以复制/粘贴并添加自己的逻辑.功能is quite simple. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |