Python对象的延迟属性
项目描述
包内容
- @lazy
用于创建延迟属性的装饰器。
概述
延迟属性是计算属性,它们仅在首次使用时进行评估。随后的使用将返回第一次调用的结果。当代码应该在需要之前
延迟 运行,即
一次 运行,即在其对象的生命周期中不会两次运行时,它们非常有用。
你可以将其视为 延迟初始化。可能性是无限的。
类型
装饰器完全支持类型。类型检查器可以从装饰方法的返回值推断出延迟属性的类型。
示例
下面的类创建其 store 资源时延迟
from lazy import lazy
class FileUploadTmpStore(object):
@lazy
def store(self):
location = settings.get('fs.filestore')
return FileSystemStore(location)
def put(self, uid, fp):
self.store.put(uid, fp)
fp.seek(0)
def get(self, uid, default=None):
return self.store.get(uid, default)
def close(self):
if 'store' in self.__dict__:
self.store.close()
另一个应用领域是缓存
class PersonView(View):
@lazy
def person_id(self):
return self.request.get('person_id', -1)
@lazy
def person_data(self):
return self.session.query(Person).get(self.person_id)
文档
有关更多详细信息,请参阅API文档。
变更日志
1.6 - 2023-09-14
实现 lazy.__set_name__(),这有助于处理类似于 foo=lazy(_foo) 的情况。[stefan]
更新tox.ini以使用最新版本的tox。[stefan]
添加GitHub CI工作流。[stefan]
添加 .readthedocs.yaml 文件。[stefan]
在文档extra中锁定sphinx和sphinx-rtd-theme版本。[stefan]
添加mypy extra,该extra安装mypy。[stefan]
修复关键字中的散乱字符。[stefan]
1.5 - 2022-09-18
允许类型检查器推断懒属性的类型。感谢Elias Keis和Palpatineli的贡献。[elKei24] [Palpatineli]
在tox.ini中添加Python 3.8-3.11,删除旧版本Python。[stefan]
在tox.ini中替换已弃用的python setup.py test。[stefan]
从setup.py中删除已弃用的test_suite。[stefan]
将元数据移动到setup.cfg并添加pyproject.toml文件。[stefan]
在sdist中包含测试但不包含wheel。[stefan]
1.4 - 2019-01-28
添加MANIFEST.in。[stefan]
以通用wheel的形式发布。[stefan]
1.3 - 2017-02-05
支持Python 2.6-3.6,无需2to3。[stefan]
添加LICENSE文件。[stefan]
1.2 - 2014-04-19
由于它不是setuptools,从install_requires中删除setuptools。[stefan]
1.1 - 2012-10-12
正确使用functools.wraps();Python 3的每个版本都会改变属性列表。[stefan]
1.0 - 2011-03-24
初始发布。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
lazy-1.6.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7127324ec709e8324f08cb4611c1abe01776bda53bb9ce68dc5dfa46ca0ed3e9 |
|
MD5 | 01a1311b20cc6f119e5478ef036685c2 |
|
BLAKE2b-256 | 3ce6704c32da169b023a9ac86d116f5433b42d02b4afeda24c9400a69b3530e5 |
lazy-1.6-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 449375c125c7acac6b7a93f71b8e7ccb06546c37b161613f92d2d3981f793244 |
|
MD5 | d291aee5d64c5318620e12a231353bd3 |
|
BLAKE2b-256 | 11ae3ae578fc22dc9c5f60ddcb5c254fe808d45ee7b4cd03315245caf5db6a47 |