Bem vindo de volta.
No vídeo anterior, vimos que fizemos um grande booboo, ou seja, sobrescrevemos o nome e falamos, e agora
todo o trabalho árduo que colocamos em nossa classe foi substituído por isso.
Quero dizer, claro, se instanciarmos um novo objeto.
Vamos correr e falar, mas o jogador um agora é completamente inútil, não tem nome e fala, mas
apenas diz Boo, completamente inútil.
Agora, em Python, existe essa ideia de público e privado, e isso está relacionado à nossa discussão
sobre abstração, a ideia por trás da abstração é que escondemos informações e apenas damos acesso a
coisas que preocupam o usuário.
Direito.
Então, idealmente, não devemos ter acesso a ele.
Idealmente, não deveríamos ser capazes de, digamos, modificar, executar ou modificar o nome e a idade,
porque quando criamos um personagem do jogador em nosso jogo, esperançosamente, o jogador pode mudar aleatoriamente seu nome ou
idade.
E entre no nosso jogo, que talvez tenha apenas 18 anos ou mais.
Então, podemos fazer uma variável privada em nossa classe?
Bem, aqui está a coisa.
Algumas linguagens nos permitem ter variáveis privadas.
Por exemplo, em uma linguagem como Java, posso realmente dizer que um atributo é privado como este e
não serei capaz de acessá-lo e modificá-lo como fiz desta forma.
Mas em Python, não há privacidade verdadeira, nem variáveis privadas verdadeiras.
Então, como vamos contornar isso?
Bem, o que faríamos é sublinhar o nome ou sublinhar H.
Agora, isso dá algum poder especial?
Não, esta é apenas uma convenção que é como programadores, como programadores Python, determinamos que,
hey, se virmos um sublinhado em nosso código, isso provavelmente significa que esta deve ser uma variável privada.
Então, quando eu usá-lo para falar, vamos dizer o nome de sublinhado, sublinhado H.
E vamos comentar isso se eu clicar, Ron.
Bem, eu tenho que executar isso porque agora é um método, vamos executar.
E eu sei que meu nome é Andre, e tenho 100 anos.
Tudo funciona, mas se eu tentar sobrescrever e clicar em executar.
OK, e agora, como não é mais um método, vamos remover, falar e clicar em executar.
Isso ainda funciona, e isso é porque, como eu disse, não existem verdadeiras variáveis privadas como programadores, decidimos que sublinhado
significa que você não deve nos tocar.
Por favor, não toque nisso.
Você ainda pode ser mau e fazer algo assim.
Mas estou avisando com antecedência.
Se você vir o sublinhado, isso não deve ser modificado.
Isso deve ser privado.
E é assim que alcançamos privacidade no Python.
Todos nós meio que concordamos em dizer, ei, vamos manter essa coisinha privada.
Portanto, se você quiser manter um método ou atributo privado, basta colocar um sublinhado na frente dele.
Mas não é garantia.
Que tal este init de sublinhado duplo?
Novamente, falaremos sobre isso em breve, mas é chamado de método Dundar.
Ou seja, ele está integrado ao Python.
E geralmente nunca escrevemos nossos próprios métodos Dundar, nunca escreveríamos sublinhado duplo, escrevemos isso.
Esses sublinhados duplos, e muitos deles, têm um significado especial em Python.
E a razão de o nome deles ser assim é porque eles estão dizendo, ei, se você está escrevendo sublinhado duplo
para sua variável, você está fazendo algo muito errado, você está prestes a sobrescrever algo.
Então, mais uma vez, esse sublinhado duplo também é uma convenção para que as pessoas saibam que você não
deve realmente tocar ou modificar isso com cada tipo de dados.
Digamos uma lista.
Se eu fizer Dot, você verá ao rolar para baixo.
Você tem muitos desses métodos Dundar, novamente, algo sobre o qual vamos falar.
Mas eles estão aqui para informá-lo, não os substitua.
Se você está fazendo algo como sublinhado, sublinhado, não conheço doc como este, isso é ruim.
Não tente modificá-lo e atribuir em cinco.
Portanto, essa ideia de um campo privado é importante para Python e, embora possamos sobrescrever muitas coisas, é uma
prática ruim.
Mas vamos trazê-lo de volta à abstração.
A ideia é abstrair esse código.
E embora ele possa ser modificado e sobrescrito usando essas convenções adequadas como atributos privados, somos capazes de abstrair as coisas,
mas ainda ter certeza de que tudo o que o usuário pode estar usando não vai
quebrar nosso código.
Te vejo no próximo, Bob.