Factory+Registry pattern for Python classes.
.. image:: https://travis-ci.org/eflglobal/class-registry.svg?branch=master :target: https://travis-ci.org/eflglobal/class-registry .. image:: https://readthedocs.org/projects/class-registry/badge/?version=latest :target: http://class-registry.readthedocs.io/
At the intersection of the Registry and Factory patterns lies the
ClassRegistry
:
entry_points
system to make your registries
infinitely extensible by 3rd-party libraries!Create a registry using the class_registry.ClassRegistry
class, then
decorate any classes that you wish to register with its register
method:
.. code-block:: python
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:
.. code-block:: python
fighter1 = pokedex['fire']
fighter2 = pokedex['grass']
There's a whole lot more you can do with ClassRegistry, including:
entry_points
system so that 3rd-party
libraries can add their own classes to your registries.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
.. _check out the documentation on rtd: https://class-registry.readthedocs.org/