Vengo del mundo Java y leo los patrones, recetas y modismos de Python 3 de Bruce Eckels .
Mientras lee sobre clases, continúa diciendo que en Python no hay necesidad de declarar variables de instancia. Solo los usas en el constructor, y boom, están allí.
Así por ejemplo:
class Simple:
def __init__(self, s):
print("inside the simple constructor")
self.s = s
def show(self):
print(self.s)
def showMsg(self, msg):
print(msg + ':', self.show())
Si eso es cierto, cualquier objeto de la clase Simple
puede cambiar el valor de la variable s
fuera de la clase.
Por ejemplo:
if __name__ == "__main__":
x = Simple("constructor argument")
x.s = "test15" # this changes the value
x.show()
x.showMsg("A message")
En Java, nos han enseñado sobre variables públicas / privadas / protegidas. Esas palabras clave tienen sentido porque a veces quieres variables en una clase a las que nadie fuera de la clase tenga acceso.
¿Por qué no se requiere eso en Python?