Visão geral do encapsulamento em Python

O encapsulamento é um dos quatro conceitos fundamentais da programação orientada a objetos. Quando há um requisito para agrupar dados, e suas sub-rotinas subsequentes que colaboram e funcionam em um só lugar, juntamente com a necessidade de ocultar os detalhes complexos do usuário, usamos o encapsulamento para entender 'Encapsulamento em Python', precisamos nos aprofundar e entender como o Encapsulation entra em cena em uma linguagem de programação. O encapsulamento ajuda a restringir o acesso a métodos e variáveis. Impedindo qualquer modificação acidental de dados, e isso é conseguido usando os métodos Variável de Instância não Pública e Variável de Instância Não Pública. A classe encapsula os métodos e variáveis.

Mangling de nome em Python

Python implica uma restrição no acesso aos dados. Não há modificadores de acesso explícitos, mas o acesso pode ser controlado via Name Mangling no Python. Por padrão, todos os métodos e variáveis ​​são públicos em Python. Portanto, se qualquer identificador tiver dois sublinhados principais, ele se tornará uma instância não pública no Python. Nós estaríamos especificando variáveis ​​e métodos de instância não públicos aqui para entender melhor o encapsulamento. O escopo do método de instância não pública é apenas dentro de sua própria classe e começa com um sublinhado ou dois sublinhados, ou seja, um único "_" ou "__" duplo antes de uma variável ou de um método. O escopo de uma variável de instância não pública também está em sua própria classe ou pelo método em que está definida e também começa com dois sublinhados. Se perdermos os dois sublinhados, esse método será considerado um método público. Antes de entendermos o Encapsulamento em Python, precisamos entender como as variáveis ​​e métodos de instância públicos e não públicos funcionam.

Variáveis ​​de instância não pública

No Python, não há termo "privado", pois nenhum atributo é realmente privado no Python (discutiremos a alternativa subjacente mais adiante neste artigo). Em vez disso, os referimos como Variável de instância não pública. É assim que referimos as variáveis ​​privadas e os métodos privados.

Aqui está um pequeno trecho do código em python para variáveis ​​de instância não públicas:

Usamos a palavra-chave self porque estamos acessando a variável de classe. A saída é:

Para buscar uma confirmação sobre o escopo da variável de instância não pública, adicionamos print (abc .__ a) ao código:

E a saída retornada é:

Portanto, vemos que não podemos usar variáveis ​​de instância não públicas fora da classe.

Métodos de instância não pública

Uma função de instância não pública não pode ser chamada diretamente no objeto, mas apenas dentro da classe.

Nesse trecho de código, temos dois métodos, uma instância não pública e outro método público. O método público é facilmente chamado criando um objeto da classe abc e, em seguida, sua saída é impressa.

Quando uma abordagem semelhante é tentada para o método de instância não pública, enfrentamos o seguinte erro:

Este programa produzirá a seguinte saída:

Portanto, não é possível acessar um método de instância não pública por criação de objeto. Para acessar o método de instância não pública, podemos chamar o método __show1 () a partir do método show2 () da mesma classe. Aqui está como podemos exibir o método de instância não pública a partir do método público da mesma classe.

Resultado:

Portanto, o método de instância não pública não pode ser chamado fora de sua classe.

A maneira indireta de acessar a variável de instância não pública

Por razões legítimas, variáveis ​​de instância não públicas não podem ser acessadas além da classe, mas existe uma maneira indireta de modificar o valor da variável de instância não pública e acessar usando objetos. Vamos dar uma olhada no snippet de código abaixo:

Resultado:

No programa acima, temos os métodos públicos getNumber (self, num) e displayNumber () e uma variável de instância não pública. Ao chamar o primeiro método, atribuímos o valor à variável de instância não pública, e isso é chamado no método displayNumber ().

O método setter é usado para definir o valor da variável de instância não pública. Isso é útil nos cenários em que você pode alterar o valor de uma variável de instância não pública após a criação de objetos para uma variável específica.

Vantagens do encapsulamento em Python

O encapsulamento ajuda a estabelecer um melhor fluxo de dados e também a proteção dos dados. O conceito de encapsulamento torna o código auto-suficiente. O encapsulamento fornece uma grande ajuda no nível da implementação, pois se concentra principalmente na pergunta "como" deixando o complexo "quando / onde" e suas complexidades para trás. Ocultar os dados em uma unidade facilita o encapsulamento e também protege os dados.

Por que precisamos de encapsulamento em Python?

Abaixo estão vários motivos listados pelos quais os desenvolvedores consideram o conceito de encapsulamento útil e por que os conceitos orientados a objetos estão dominando a maioria das linguagens de programação em execução no cenário atual.

  • Há uma necessidade de interação bem definida em todos os aplicativos; os encapsulamentos ajudam a conseguir isso.
  • O conceito de programação de orientação a objetos em python se concentra em criar código reutilizável. Também é abreviado como DRY (não se repita).
  • A manutenção do aplicativo é mais fácil e a segurança é garantida.
  • Clareza no procedimento de codificação, pois os desenvolvedores devem se preocupar com o objetivo da classe e as complexidades são tratadas sistematicamente.
  • A organização adequada dos códigos ajuda na flexibilidade do código e também auxilia no teste de unidade.
  • Os usuários acham fácil usar o sistema, pois estão ocultos do design complexo envolvido no back-end.
  • Ter todos os dados semelhantes em um só lugar e encapsulados aumenta a coesão dentro de um módulo.
  • Melhora a legibilidade dos códigos e as alterações em uma parte do código não perturbam outras partes do código.
  • O encapsulamento impede que a parte do código seja acessada acidentalmente, mas não intencionalmente, pois os objetos mantêm dados críticos para aplicativos e devem ser alterados em qualquer lugar do código.

Conclusão - Encapsulamento em Python

Em termos mais simples, o encapsulamento em Python significa que a representação interna de um objeto geralmente está oculta da visualização fora da definição do objeto. Isso ajuda o desenvolvedor a desenvolver uma experiência amigável para o usuário final e há proteção contra uma violação de segurança à medida que os códigos são tornados seguros.

Artigos recomendados

Este é um guia para o encapsulamento em Python. Aqui discutimos as necessidades de encapsulamento em python, juntamente com suas variáveis ​​de instância não públicas e métodos de instância. Você também pode consultar os seguintes artigos para saber mais -

  1. O que é Python
  2. O Python é orientado a objetos
  3. Padrões em Python
  4. Como usar o encapsulamento em C ++?
  5. Encapsulamento em Java | Exemplos
  6. Encapsulamento em C (Trabalho, Exemplos)
  7. Introdução ao encapsulamento em JavaScript