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 |