python类的factory+注册表模式。

phx-class-registr的Python项目详细描述


https://travis-ci.org/todofixthis/class-registry.svg?branch=masterhttps://readthedocs.org/projects/class-registry/badge/?version=latest

类注册表

在注册表模式和工厂模式的交叉点上有 ClassRegistry

  • 定义基于 可配置钥匙。
  • 无缝地创建强大的服务注册中心。
  • 与setuptools的entry_points系统集成以创建注册表 可由第三方库无限扩展!
  • 还有更多!

开始

使用class_registry.ClassRegistry类创建注册表,然后 用它的register方法装饰要注册的任何类:

fromclass_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与以下Python版本兼容:

  • 3.8
  • 3.7
  • 3.6
  • 3.5

pypy3也受支持。

注意

ClassRegistry与Python2不兼容

安装

通过pip安装最新的稳定版本:

pip install phx-class-registry

运行单元测试

从源安装后运行单元测试:

python setup.py test

此项目还与tox兼容,后者将在中运行单元测试 不同的虚拟环境(每个受支持的python版本一个)。

使用test-runnerextra安装包以设置必要的 依赖项,然后可以使用tox命令运行测试:

pip install -e .[test-runner]
tox -p all

文件

文档可在ReadTheDocs上找到。

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

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

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

    cd docs
    
  3. 制作文档:

    make html
    

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

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令