pythonadvanced
Abc Registry
Advanced Python pattern: abc-registry
pythonPress ⌘/Ctrl + Shift + C to copy
from abc import ABC, abstractmethod
class Handler(ABC):
registry: dict[str, type['Handler']] = {}
def __init_subclass__(cls, key: str, **kwargs):
super().__init_subclass__(**kwargs)
Handler.registry[key] = cls
@abstractmethod
def handle(self, data: str) -> str: ...
class Upper(Handler, key='upper'):
def handle(self, data: str) -> str:
return data.upper()
print(Handler.registry['upper']().handle('hi'))Use Cases
- advanced programming
- patterns
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
pythonadvanced
Abc Abstract
Advanced Python pattern: abc-abstract
Best for: advanced programming
#python#advanced
pythonintermediate
Abstract Base Classes with abc
Define interfaces and enforce method implementation with Python's abc module.
Best for: Interface contracts
#python#abc
pythonbeginner
Type Hints
Advanced Python pattern: type-hints
Best for: advanced programming
#python#advanced
pythonintermediate
Dataclass
Advanced Python pattern: dataclass
Best for: advanced programming
#python#advanced