skip to navigation
skip to content

multipledispatch 0.2.0

Multiple dispatch

Latest Version: 0.5.0

A relatively sane approach to multiple dispatch in Python.

There are a few implementations of multiple dispatch already out there (see links below). This implementation one is efficient, relatively complete, and performs static analysis to avoid common issues.


>>> from multipledispatch import dispatch

>>> @dispatch(int, int)
... def add(x, y):
...     return x + y

>>> @dispatch(object, object)
... def add(x, y):
...     return "%s + %s" % (x, y)

>>> add(1, 2)

>>> add(1, 'hello')
'1 + hello'

What this does

  • Dispatches on all non-keyword arguments
  • Supports inheritance
  • Supports union types, e.g. (int, float)
  • Supports builtin abstract classes, e.g. Iterator, Number, ...
  • Caches for fast repeated lookup
  • Identifies possible ambiguities at function definition time
  • Provides hints to resolve ambiguities when they occur

What this doesn’t do

  • Dispatch on class methods
class Foo(object):
    def add(self, other):
  • Vararg dispatch
def add(*args):
  • Diagonal dispatch
a = arbitrary_type()
@dispatch(a, a)
def are_same_type(x, y):
    return True
  • Respect namespaces

Installation and Dependencies

multipledispatch is on the Python Package Index (PyPI):

pip install multipledispatch


easy_install multipledispatch

multipledispatch supports Python 2.6+ and Python 3.2+ with a common codebase. It is pure Python and requires no dependencies beyond the standard library.

It is, in short, a light weight dependency.


New BSD. See License.

File Type Py Version Uploaded on Size
multipledispatch-0.2.0.tar.gz (md5) Source 2014-02-23 5KB