En Python, no hay modificadores de acceso. La convención es prefijar con un guión bajo los métodos y variables a los que no se espera acceder desde fuera de la clase. ¿Técnicamente le impide acceder a dicho campo desde una clase de terceros? De ningún modo; pero si lo haces, estás solo y te arriesgas a romper algo, sin poder culpar a la otra clase.
En C #, los modificadores de acceso existen, pero aún son solo una convención, una que es aplicada por un compilador, pero aún así es una convención. Esto significa que, técnicamente, todavía se puede acceder y cambiar variables privadas, ya sea a través de Reflection o manipulando directamente la memoria (como entrenadores de juego hacer). La consecuencia es exactamente la misma: si las variables de su clase se cambian a través de la Reflexión de otra clase, o a través de la manipulación de la memoria por otra aplicación, y se rompe algo en su clase, no es su culpa.
Tenga en cuenta que esto, obviamente, crea problemas de seguridad en los que un tercero puede acceder a sus datos de su ; algo que lleva a variantes cifradas de una cadena y estructuras de datos similares. Pero proteger su código de dicho uso está más relacionado con el sistema operativo y restricciones de acceso a nivel de código , y no tiene nada que ver con la Reflexión en sí misma.