Factory+Registry pattern for Python classes.
At the intersection of the Registry and Factory patterns lies the ClassRegistry:
- Define global factories that generate new class instances based on configurable keys.
- Seamlessly create powerful service registries.
- Integrate with setuptools’s entry_points system to make your registries infinitely extensible by 3rd-party libraries!
- And more!
Create a registry using the class_registry.ClassRegistry class, then decorate any classes that you wish to register with its register method:
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): ...
To create a class instance from a registry, use the subscript operator:
# 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']
There’s a whole lot more you can do with ClassRegistry, including:
- Provide args and kwargs to new class instances.
- Automatically register non-abstract classes.
- Integrate with setuptools’s entry_points system so that 3rd-party libraries can add their own classes to your registries.
- Wrap your registry in an instance cache to create a service registry.
- And more!
For more advanced usage, check out the documentation on RTD!
ClassRegistry is compatible with Python versions 3.6, 3.5 and 2.7.
Install the latest stable version via pip:
pip install class-registry
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for class_registry-2.1.2-py2.py3-none-any.whl