em termos reais (praticamente), python não tem nada chamado de variável de membro privado em Python. No entanto, adicionar dois sublinhados(__) no início torna uma variável ou um método privado é a convenção usada pela maioria dos códigos python.
Vamos entender este conceito através de um exemplo −
privateVar1.py
Demonstração ao Vivo
class myClass: __privateVar = 27; def __privMeth(self): print("I'm inside class myClass") def hello(self): print("Private Variable value: ",myClass.__privateVar)foo = myClass()foo.hello()foo.__privateMeth
No programa acima, __privMeth é um método privado e __privateVar é uma variável privada. Vamos ver a sua saída agora −
Saída
Private Variable value: 27Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMethAttributeError: 'myClass' object has no attribute '__privateMeth'
a Partir da saída acima, podemos ver que, fora a classe “minhaclasse”, você não pode acessar o método privado bem como a variável privada. No entanto, dentro da classe (myClass) podemos acessar as variáveis privadas. In the hello () method, the __privateVar variable can be accessed (as shown above: “Private Variable value: 27”).
assim, a partir do exemplo acima, podemos entender que todas as variáveis e os métodos dentro da classe são públicos pelo método. Quando declaramos membro de dados como privado significa que eles são acessíveis apenas ao lado da classe e são inacessíveis fora da classe. A técnica de fazer uma variável ou método privado é chamada de manjedoura de dados. Qualquer identificador do formulário _ _ spam(pelo menos dois underscores iniciais, no máximo um underscore posterior) é textualmente substituído por _classname__spam, onde classname é o nome da classe atual com um underscore líder despojado. Este corte é feito sem consideração à posição sintática do identificador, desde que ocorra dentro da definição de uma classe.
nomes de sublinhado duplos são destinados a evitar sobreposições acidentais por uma subclasse em vez disso.