python类的factory+注册表模式。

klass-registr的Python项目详细描述


https://travis-ci.org/igormq/klass-registry.svg?branch=masterhttps://readthedocs.org/projects/klass-registry/badge/?version=master

类注册表

在注册表模式和工厂模式的交叉点上有 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上找到。

如果您是从源代码安装(见上文),也可以构建 本地文档:

  1. 安装额外的依赖项(您只需执行一次):

    pip install '.[docs-builder]'
    
  2. 切换到docs目录:

    cd docs
    
  3. 制作文档:

    make html
    

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java如何关闭类共享   java我正在安卓中集成paytm all-in-one sdk,每次我都会得到一个成功的代码,但在安卓中主体是空的   OncreateView中的java意外NPE   java SOAP UI支持JCEKS密钥库吗?   java JDialog未显示最小化/关闭按钮   java数组出现问题,无法向其添加任何内容   安卓 java。单击按钮时出现lang.NullPointerException   单击后更改按钮样式   java使用循环分区分配策略提供CommitFailedException   java与屏幕底部的安卓相交   java在两个或多个noSQL数据库上处理事务的方法是什么?   java 安卓。R.布局。简单微调器项目显示:“预期的类或包”   java如何处理字谜搜索过程中字符串排列的时间复杂性?   对象getClass在Java中是如何工作的   java RxJava如何在flatmap结果选择器中直接返回值   java如何在spring security antmatchers中使用参数   java RestEasyClientBuild寄存器ResteasyJackson2Provider警告重复   java计算ping时间