diff --git a/fastcore/xtras.py b/fastcore/xtras.py index 463cd9db..36dea3cd 100644 --- a/fastcore/xtras.py +++ b/fastcore/xtras.py @@ -722,8 +722,8 @@ def flexiclass( def asdict(o)->dict: "Convert `o` to a `dict`, supporting dataclasses, namedtuples, iterables, and `__dict__` attrs." if isinstance(o, dict): return o - if is_dataclass(o): r = dataclasses.asdict(o) - elif hasattr(o, '_asdict'): r = o._asdict() + if hasattr(o, '_asdict'): r = o._asdict() + elif is_dataclass(o): r = dataclasses.asdict(o) elif hasattr(o, '__iter__'): try: r = dict(o) except TypeError: pass diff --git a/nbs/03_xtras.ipynb b/nbs/03_xtras.ipynb index a34af337..f514b0e8 100644 --- a/nbs/03_xtras.ipynb +++ b/nbs/03_xtras.ipynb @@ -3032,8 +3032,8 @@ "def asdict(o)->dict:\n", " \"Convert `o` to a `dict`, supporting dataclasses, namedtuples, iterables, and `__dict__` attrs.\"\n", " if isinstance(o, dict): return o\n", - " if is_dataclass(o): r = dataclasses.asdict(o)\n", - " elif hasattr(o, '_asdict'): r = o._asdict()\n", + " if hasattr(o, '_asdict'): r = o._asdict()\n", + " elif is_dataclass(o): r = dataclasses.asdict(o)\n", " elif hasattr(o, '__iter__'):\n", " try: r = dict(o)\n", " except TypeError: pass\n",