Why not a simple dict (without function) as in my first proposition. setuptools entry points accepts any Python object. Using such thing with abcMeta enforces an interface, When a dict may contain anything.