diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
index 9eb1f2c13..e49e6e27a 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
@@ -2219,7 +2219,7 @@ void CppGenerator::writeConstructorWrapper(TextStream &s, const OverloadData &ov
     s << "\n// PyMI support\n"
         << pre << "Shiboken::callInheritedInit(self, args, kwds, "
         << (canAvoidFullname(classContext) ? typeInitStruct(classContext) : "fullName"_L1)
-        << ");\nif (" << shibokenErrorsOccurred << ")\n"
+        << ", false);\nif (" << shibokenErrorsOccurred << ")\n"
         << indent << errorReturn << outdent << "\n";
 
     writeFunctionCalls(s, overloadData, classContext, errorReturn);
@@ -2296,6 +2296,12 @@ void CppGenerator::writeConstructorWrapper(TextStream &s, const OverloadData &ov
         s << "}\n";
     }
 
+    s << "\n// PyMI support\n"
+        << "Shiboken::callInheritedInit(self, args, kwds, "
+        << (canAvoidFullname(classContext) ? typeInitStruct(classContext) : "fullName"_L1)
+        << ", true);\nif (" << shibokenErrorsOccurred << ")\n"
+        << indent << errorReturn << outdent << "\n";
+
     s << "\n\nreturn 1;\n";
     s<< outdent << "}\n\n";
 }
diff --git a/sources/shiboken6/libshiboken/bindingmanager.cpp b/sources/shiboken6/libshiboken/bindingmanager.cpp
index 89990544e..75b90168a 100644
--- a/sources/shiboken6/libshiboken/bindingmanager.cpp
+++ b/sources/shiboken6/libshiboken/bindingmanager.cpp
@@ -486,7 +486,7 @@ static bool isPythonType(PyTypeObject *type)
 }
 
 static bool _callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
-                               std::string_view className)
+                               std::string_view className, bool do_call)
 {
     using Shiboken::AutoDecRef;
 
@@ -528,19 +528,24 @@ static bool _callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
     //              but that is the same case like above.
     if (func == objectInit)
         return false;
-    // PYSIDE-2294: We need to explicitly ignore positional args in a mixin class.
-    SBK_UNUSED(args);
-    AutoDecRef newArgs(PyTuple_New(1));
-    auto *newArgsOb = newArgs.object();
-    Py_INCREF(self);
-    PyTuple_SetItem(newArgsOb, 0, self);
-    // Note: This can fail, so please always check the error status.
-    AutoDecRef result(PyObject_Call(func, newArgs, kwds));
+
+    if (do_call)
+    {
+        // PYSIDE-2294: We need to explicitly ignore positional args in a mixin class.
+        SBK_UNUSED(args);
+        AutoDecRef newArgs(PyTuple_New(1));
+        auto *newArgsOb = newArgs.object();
+        Py_INCREF(self);
+        PyTuple_SetItem(newArgsOb, 0, self);
+        // Note: This can fail, so please always check the error status.
+        AutoDecRef result(PyObject_Call(func, newArgs, kwds));
+    }
+
     return true;
 }
 
 bool callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
-                       const char *fullName)
+                       const char *fullName, bool do_call)
 {
     // fullName is the full dotted name of module, class and function.
     // We need to cut off the rightmost field to get the module.class name.
@@ -548,14 +553,14 @@ bool callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
     auto pos = className.rfind('.');
     assert(pos != std::string_view::npos);
     className = className.substr(0, pos);
-    return _callInheritedInit(self, args, kwds, className);
+    return _callInheritedInit(self, args, kwds, className, do_call);
 }
 
 bool callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
-                       Module::TypeInitStruct typeStruct)
+                       Module::TypeInitStruct typeStruct, bool do_call)
 {
     // TypeInitStruct must contain the module.class name.
-    return _callInheritedInit(self, args, kwds, typeStruct.fullName);
+    return _callInheritedInit(self, args, kwds, typeStruct.fullName, do_call);
 }
 
 } // namespace Shiboken
diff --git a/sources/shiboken6/libshiboken/bindingmanager.h b/sources/shiboken6/libshiboken/bindingmanager.h
index 300783e7a..78d9a5d74 100644
--- a/sources/shiboken6/libshiboken/bindingmanager.h
+++ b/sources/shiboken6/libshiboken/bindingmanager.h
@@ -85,9 +85,9 @@ private:
 };
 
 LIBSHIBOKEN_API bool callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
-                                       const char *fullName);
+                                       const char *fullName, bool do_call);
 LIBSHIBOKEN_API bool callInheritedInit(PyObject *self, PyObject *args, PyObject *kwds,
-                                       Module::TypeInitStruct typeStruct);
+                                       Module::TypeInitStruct typeStruct, bool do_call);
 
 } // namespace Shiboken
 

