Учитывая, что миксины обычно вводят новое поведение в класс, это обычно подразумевает, что класс будет иметь более одного поведения.
Если бы это было правдой, это было бы в равной степени верно и для одиночного (реализации) наследования. Хотя никто больше не любит иерархии наследования с 23 глубинами, у него все еще есть место.
Причина, по которой наследование не нарушает SRP, заключается в том, что класс, о котором он говорит, является классом в смысле файла буквального кода, а не чем-то более абстрактным. Этот файл обычно не нужно менять, если вы изменяете файл кода базового класса.
Таким образом, единственная причина изменить его сохраняется.