la clase esta mal hecha, le asignas un valor a $num_productos cuando llamas a la funcion carrito, si no la llamas no le asignas nada

, en ese caso primeor llama carrito, y luego la variable
$_SESSION["ocarrito"]->carrito();
echo $_SESSION["ocarrito"]->array_id_prod;