python-registrable¶
Python module for registering and instantiating classes by name. Based on the implementation from AllenNLP.
Usage¶
from registrable import Registrable
# Create a base class that inherits from `Registrable`.
class MyBaseClass(Registrable):
def do_something(self):
raise NotImplementedError
# Now register subclass implementations of your base class.
@MyBaseClass.register("first_implementation")
class FirstImplementation(MyBaseClass):
def do_something(self):
return 1
# You can access an implementation by calling `.by_name()` on the base class.
subclass = MyBaseClass.by_name("first_implementation")
instance = subclass()
assert instance.do_something() == 1