python类的factory+注册表模式。
klass-registr的Python项目详细描述
类注册表
在注册表模式和工厂模式的交叉点上有 ClassRegistry:
- 定义基于 可配置钥匙。
- 无缝地创建强大的服务注册中心。
- 与setuptools的entry_points系统集成以创建注册表 可由第三方库无限扩展!
- 还有更多!
开始
使用klass_registry.ClassRegistry类创建注册表,然后 用它的register方法装饰要注册的任何类:
fromklass_registryimportClassRegistrypokedex=ClassRegistry()@pokedex.register('fire')classCharizard(Pokemon):...@pokedex.register('grass')classBulbasaur(Pokemon):...@pokedex.register('water')classSquirtle(Pokemon):...
要从注册表创建类实例,请使用下标运算符:
# Charizard, I choose you!fighter1=pokedex['fire']# CHARIZARD fainted!# How come my rival always picks the type that my pokémon is weak against??fighter2=pokedex['grass']
高级用法
ClassRegistry还有很多功能,包括:
- 为新的类实例提供args和kwargs。
- 自动注册非抽象类。
- 与setuptools的entry_points系统集成,以便第三方 库可以将它们自己的类添加到注册表中。
- 在实例缓存中包装注册表以创建服务注册表。
- 还有更多!
有关更高级的用法,请查看ReadTheDocs上的文档!
要求
ClassRegistry与Python3.7、3.6、3.5和2.7版本兼容。
安装
通过pip安装最新的稳定版本:
pip install klass-registry
运行单元测试
从源安装后运行单元测试:
python setup.py test
此项目还与tox兼容,后者将在中运行单元测试 不同的虚拟环境(每个受支持的python版本一个)。
要运行单元测试,建议使用detox库。 排毒通过并行运行来加速测试。
使用test-runnerextra安装包以设置必要的 依赖项,然后可以使用tox命令运行测试:
pip install -e .[test-runner] tox -v
提示
并行运行多个python版本的测试:
# Python 3.7 only tox -p all # Python 3.6 or earlier pip install detox detox
文件
文档可在ReadTheDocs上找到。
如果您是从源代码安装(见上文),也可以构建 本地文档:
安装额外的依赖项(您只需执行一次):
pip install '.[docs-builder]'
切换到docs目录:
cd docs
制作文档:
make html