Estou vindo do mundo Java e lendo Python 3 Patterns, Recipes and Idioms, de Bruce Eckels .
Ao ler sobre classes, continua dizendo que no Python não há necessidade de declarar variáveis de instância. Você apenas os usa no construtor, e boom, eles estão lá.
Então, por exemplo:
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 isso for verdade, qualquer objeto da classe Simple
pode apenas alterar o valor da variável s
fora da classe.
Por exemplo:
if __name__ == "__main__":
x = Simple("constructor argument")
x.s = "test15" # this changes the value
x.show()
x.showMsg("A message")
Em Java, aprendemos sobre variáveis públicas / privadas / protegidas. Essas palavras-chave fazem sentido porque às vezes você deseja variáveis em uma classe às quais ninguém fora da classe tem acesso.
Por que isso não é necessário no Python?