Vengo dal mondo Java e sto leggendo Python 3 Patterns, Recipes and Idioms di Bruce Eckels .
Durante la lettura delle classi, si continua dicendo che in Python non è necessario dichiarare le variabili di istanza. Li usi solo nel costruttore, e boom, sono lì.
Quindi per esempio:
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())
Se questo è vero, allora qualsiasi oggetto della classe Simple
può semplicemente cambiare il valore della variabile s
al di fuori della classe.
Per esempio:
if __name__ == "__main__":
x = Simple("constructor argument")
x.s = "test15" # this changes the value
x.show()
x.showMsg("A message")
In Java, ci hanno insegnato le variabili pubbliche / private / protette. Queste parole chiave hanno senso perché a volte vuoi variabili in una classe a cui nessuno al di fuori della classe ha accesso.
Perché non è necessario in Python?