Multimethods and more via decorators in Python