python类的factory+注册表模式。

class-registr的Python项目详细描述


https://travis-ci.org/eflglobal/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系统集成,以便第三方 库可以将它们自己的类添加到注册表中。
  • 在实例缓存中包装注册表以创建服务注册表。
  • 还有更多!

更高级的用法,check out the documentation on RTD

要求

ClassRegistry与Python3.6、3.5和2.7版本兼容。

安装

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

pip install class-registry

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

推荐PyPI第三方库


热门话题
使用安卓中不同Java类中声明的变量   java Paypal重新授权失败DCC\u不允许重新授权\u   java删除Nattable中的行号   Java扫描器在循环时数据类型验证中输入错误后未读取换行符   java如何使用jsoup计算div的数量?   java嵌套这样的try/finally子句安全吗?   Java中的安卓格式浮点数(#.#.#.#.#)   java为什么maven总是指向JRE的较低版本   Java中的对象GUI网格   具有中心值和基于值的背景的java单元格   在java中,如何检查布尔值是否存在介于两个数字之间的数字?   等于Java 1.7对hashCode()的重写,其行为不符合我的预期   java使用来自Netbeans的JDBC资源和servlet