Uno de los mayores mitos mientras aprendes a programar es que los elementos privados son inaccesibles, y por ello seguros. Esto es aplicable sólo a lenguajes orientados a objetos con elementos privados, como java.
Así ves a una cantidad enorme de aspirantes a programador que gastan la mitad del tiempo pensando cómo hacer un código blindado frente ataques. Aunque ninguno sabe de qué ataques se defiende, o qué implicaciones tiene privatizar o publicar algo.
Sin embargo, no es más que una sensación de falsa seguridad. Tenemos herramientas en el lenguaje para acceder a estos campos. En Java, por ejemplo, tenemos la siguiente clase:
public class Secreto {
private int miSecreto = 5;
}
Podemos acceder a ese valor así:
import java.lang.reflect.Field;
public class Ganzua {
public static void main(String[] args) throws Exception {
Secreto secreto = new Secreto();
Field campo = Secreto.class.getDeclaredField("miSecreto");
campo.setAccessible(true);
System.out.println(campo.getName() + " = " + campo.get(secreto));
}
}
Hoy lo he hablado Pablo, mi compañero de habitación en warp. En Python no hay nada privado, siguen el “somos todos adultos”, permitiendo al programador usar algo delicado.
Tampoco creo que eso sea lo mejor. Tiene que haber cosas privadas para marcar lo que no tiene importancia en el exterior. Si no tiene importancia no es mostrado ni en la documentación, ni en los autocompletados. De esta manera agilizas la programación.