Class: MultiMethod | ./src/peak/util/dispatch.py | ||||||||
---|---|---|---|---|---|---|---|---|---|
Callable dispatcher with support for chaining to "next closest" matchesUsage:: from peak.util.dispatch import MultiMethod, Signature class Foo: pass class Bar(Foo): pass class Baz(Foo): pass spam = MultiMethod() spam[Signature(Foo,Bar)] = lambda next,x,y: "foobar, "+next()(next,x,y) spam[Signature(Foo,Foo)] = lambda next,x,y: "foofoo" print spam(Foo(),Bar()) # prints "foobar, foofoo" print spam(Baz(),Baz()) # prints "foofoo"
|