1
resposta

[Dúvida] Membro privado...

Vimos que o Python segue uma convenção para deixar claro que um atributo ou método é considerado privado.

Referente a convenção, veja as seguintes afirmações.

Dentro de uma classe Conta ...

a) ... o atributo __saldo se torna_Conta__saldo.

b) ... o método __pode_sacar() se torna _Conta__pode_sacar().

Agora a dúvida o correto não seria:

a) ... o atributo __saldo se torna __Conta__saldo.

b) ... o método __pode_sacar() se torna __Conta__pode_sacar().

Estou confuso poderia me ajudar entender melhor isso?

1 resposta

Olá, Caio. Tudo bem?

A convenção do Python para tornar métodos e atributos privados é utilizar dois underlines (__) antes do nome do atributo ou método.

Então, dentro da classe os atributos privados serão escritos da seguinte forma:

__saldo

E os métodos privados serão declarados da seguinte maneira:

def __pode_sacar(self):
    ...

Então, caso você queira acessar esses atributos ou métodos dentro da classe que eles pertencem você só precisa utilizar o nome deles da forma que foram declarados.

Já o formato _Conta__saldo serve para acessar os atributos ou métodos privados da classe fora da classe que eles pertencem. Esse formato é uma convenção automática do próprio Python, para indicar aos devs que estão escrevendo um código fora daquela classe, que aquele atributo ou método é privado.

Nesse formato, antes do nome da classe, utilizamos somente um underline, e antes do nome do método ou atributo são usados dois underlines.

É importante ressaltar que apesar desse acesso de um método ou atributo privado ser possível fora da classe de origem, ela não é recomendado, sendo uma má prática realizá-lo.

Espero que sua dúvida tenha sido solucionada. Qualquer outra questão estou a disposição.

Abraços. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software