## multimethod


A callable directed acyclic graph of methods.


Usage

``` python
multimethod(func)
```


## Attributes

| Name | Description |
|----|----|
| [__name__](#__name__) | str(object='') -\> str |
| [docstring](#docstring) | a descriptive docstring of all registered functions |

------------------------------------------------------------------------


#### \_\_name\_\_


str(object='') -\> str


**`name`**`: str`


str(bytes_or_buffer\[, encoding\[, errors\]\]) -\> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.\_\_str\_\_() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.


------------------------------------------------------------------------


#### docstring


a descriptive docstring of all registered functions


`docstring`


## Methods

| Name | Description |
|----|----|
| [__call__()](#__call__) | Resolve and dispatch to best method. |
| [__missing__()](#__missing__) | Find and cache the next applicable method of given types. |
| [clean()](#clean) | Empty the cache. |
| [copy()](#copy) | Return a new multimethod with the same methods. |
| [evaluate()](#evaluate) | Evaluate any pending forward references. |
| [parents()](#parents) | Find immediate parents of potential key. |
| [register()](#register) | Decorator for registering a function. |

------------------------------------------------------------------------


#### \_\_call\_\_()


Resolve and dispatch to best method.


Usage

``` python
__call__(*args, **kwargs)
```


------------------------------------------------------------------------


#### \_\_missing\_\_()


Find and cache the next applicable method of given types.


Usage

``` python
__missing__(types)
```


------------------------------------------------------------------------


#### clean()


Empty the cache.


Usage

``` python
clean()
```


------------------------------------------------------------------------


#### copy()


Return a new multimethod with the same methods.


Usage

``` python
copy()
```


------------------------------------------------------------------------


#### evaluate()


Evaluate any pending forward references.


Usage

``` python
evaluate()
```


------------------------------------------------------------------------


#### parents()


Find immediate parents of potential key.


Usage

``` python
parents(types)
```


------------------------------------------------------------------------


#### register()


Decorator for registering a function.


Usage

``` python
register(self, __func: REGISTERED) -> REGISTERED
register(self, args: type = ()) -> Callable[[REGISTERED], REGISTERED]
```


Optionally call with types to return a decorator for unannotated functions.
