diff --git a/multimethod/__init__.py b/multimethod/__init__.py index 3cd6531..d8e253d 100644 --- a/multimethod/__init__.py +++ b/multimethod/__init__.py @@ -334,6 +334,7 @@ def __missing__(self, types: tuple) -> Callable: return self.setdefault(types, self.select(types, self.parents(types))) def dispatch(self, *args) -> Callable: + self.evaluate() types = tuple(map(type, args)) if not any(map(issubclass, types, self.generics)): return self[types] @@ -343,7 +344,6 @@ def dispatch(self, *args) -> Callable: def __call__(self, *args, **kwargs): """Resolve and dispatch to best method.""" - self.evaluate() func = self.dispatch(*args) try: return func(*args, **kwargs)