跳转到主要内容

Python类的Factory+Registry模式。

项目描述

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

ClassRegistry

类注册和工厂模式相交的地方是 ClassRegistry

  • 定义全局工厂,根据可配置的键生成新的类实例。

  • 无缝创建强大的服务注册表。

  • 与setuptools的 entry_points 系统集成,通过第三方库使您的注册表无限可扩展!

  • 还有更多!

入门

使用 class_registry.ClassRegistry 类创建注册表,然后使用其 register 方法装饰您希望注册的任何类

from class_registry import ClassRegistry

pokedex = ClassRegistry()

@pokedex.register('fire')
class Charizard(Pokemon):
  ...

@pokedex.register('grass')
class Bulbasaur(Pokemon):
  ...

@pokedex.register('water')
class Squirtle(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系统,以便第三方库可以将它们自己的类添加到您的注册表中。

  • 将您的注册表包装在实例缓存中,以创建服务注册表。

  • 还有更多!

对于更高级的使用,请查看RTD上的文档

要求

ClassRegistry与Python版本3.6、3.5和2.7兼容。

安装

使用pip安装最新稳定版本

pip install class-registry

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

class-registry-2.1.2.tar.gz (15.3 kB 查看散列)

上传时间

构建分发

class_registry-2.1.2-py2.py3-none-any.whl (12.9 kB 查看散列)

上传时间 Python 2 Python 3

支持