diff --git a/mmengine/registry/build_functions.py b/mmengine/registry/build_functions.py
index 246e077efba301feb10839c669ccf85858ad34ca..be79dd269a3f3c704be2796807cea081513fd12c 100644
--- a/mmengine/registry/build_functions.py
+++ b/mmengine/registry/build_functions.py
@@ -114,7 +114,8 @@ def build_from_cfg(
             # If `obj_cls` inherits from `ManagerMixin`, it should be
             # instantiated by `ManagerMixin.get_instance` to ensure that it
             # can be accessed globally.
-            if issubclass(obj_cls, ManagerMixin):  # type: ignore
+            if inspect.isclass(obj_cls) and \
+                    issubclass(obj_cls, ManagerMixin):  # type: ignore
                 obj = obj_cls.get_instance(**args)  # type: ignore
             else:
                 obj = obj_cls(**args)  # type: ignore
diff --git a/tests/test_registry/test_registry.py b/tests/test_registry/test_registry.py
index 6f0cbe5740878367ca3e694b50cfc4b5c0b5d27f..1829920f96dbe3d7f47ee75cc82b8fb8521a7785 100644
--- a/tests/test_registry/test_registry.py
+++ b/tests/test_registry/test_registry.py
@@ -339,6 +339,13 @@ class TestRegistry:
         registries = self._build_registry()
         DOGS, HOUNDS, LITTLE_HOUNDS, MID_HOUNDS, SAMOYEDS = registries[:5]
 
+        @DOGS.register_module()
+        def bark(times=1):
+            return ' '.join(['woof'] * times)
+
+        bark_cfg = cfg_type(dict(type='bark', times=3))
+        assert DOGS.build(bark_cfg) == 'woof woof woof'
+
         @DOGS.register_module()
         class GoldenRetriever:
             pass