Encapsulamento Python

Encapsulamento Python

Introdução

O encapsulamento é um dos aspectos fundamentais da programação orientada a objetos. Ele permite que os programadores controle melhor de como os dados fluam em seus programas e protege esses dados. O encapsulamento também transforma objetos em peças mais auto-suficientes e com funcionamento independente.

O conceito de encapsulamento se baseia no que você fez nos dois últimos guias com classes e construtores. Os construtores geralmente são usados ​​em estreita conjunção com o encapsulamento e realmente ajudam a fazer o encapsulamento funcionar perfeitamente.

Modificadores de acesso

Antes de aproveitar o encapsulamento, você deve entender como o Python restringe o acesso aos dados armazenados em variáveis ​​e métodos.

O Python tem diferentes níveis de restrição que controlam como os dados podem ser acessados ​​e de onde. Variáveis ​​e métodos podem ser públicos, privados ou protegidos. Essas designações são feitas pelo número de sublinhamentos antes da variável ou método.

Público

Toda variável e método que você viu até agora, com exceção dos construtores, tem sido pública. Variáveis ​​e métodos públicos podem ser modificados livremente e executados de qualquer lugar, dentro ou fora da classe. Para criar uma variável ou método público, não use nenhum sublinhado.

Privado

A designação privada apenas permite que uma variável ou método seja acessado em sua própria classe ou objeto. Você não pode modificar o valor de uma variável privada de fora de uma classe. Variáveis ​​e métodos privados são precedidos por dois sublinhados. Dê uma olhada no exemplo abaixo.

__make = 'Dodge'

Tente usar essa aula de antes. Defina as variáveis ​​no construtor para particular. Em seguida, tente imprimir uma das variáveis ​​depois que um objeto foi instanciado.

Classe Car (objeto): def __init __ (self, make = 'ford', modelo = 'pinto', ano = '1971', milhagem = '253812', color = 'laranja'): self.__make = se faça.__model = modelo.__ ano = ano eu.__mileage = milhagem.__color = cor def move_forward (self, speed): print ("seu %s está avançando em %s" %(self.__model, velocidade)) def move_backward (self, speed): print ("movendo para trás em % s" % speed) mycar = car () impressão (mycar.__modelo) 

Você receberá uma mensagem de erro informando que a variável não existe. Isso ocorre porque essa variável é privada. Agora tente executar o Siga em frente método.

mycar.Siga em frente

Tudo funciona bem. Isso porque a variável está sendo acessada por um método dentro da classe, não externamente.

Há uma captura aqui. O Python não lida exatamente com variáveis ​​protegidas, bem como outras linguagens orientadas a objetos. Em vez de realmente proteger variáveis, ele muda o nome delas dentro do intérprete. Isso permite que diferentes cópias da variável sejam criadas e existam. Tente mudar uma das variáveis ​​protegidas em seu mycar objetar e imprimi -lo.

mycar.__model = 'Mustang' impressão (mycar.__modelo) 

Agora, parece funcionar, mas o que você imprimiu é uma cópia estranha da variável protegida. Tente usar o Siga em frente método novamente.

mycar.Siga em frente

Imprimiu o valor original de __modelo. As variáveis ​​existem independentemente. Você pode ilustrar ainda mais isso imprimindo o objeto como um dicionário. Você verá duas variáveis ​​diferentes.

Imprimir (mycar.__dict__)

Protegido

Variáveis ​​e métodos protegidos são muito semelhantes aos privados. Você provavelmente não usará variáveis ​​ou métodos protegidos com muita frequência, mas ainda vale a pena saber o que são. Uma variável protegida só pode ser acessada por sua própria classe e qualquer classes derivadas dela. Isso é mais um tópico para mais tarde, mas esteja ciente de que, se você estiver usando uma classe como base de outra, as variáveis ​​protegidas podem ser uma boa opção. As variáveis ​​protegidas começam com um único sublinhado.

O que é encapsulamento

Então, agora que você sabe como os modificadores de acesso funcionam, esta próxima parte vai parecer bastante óbvia. O encapsulamento é o processo de uso de variáveis ​​privadas nas classes para evitar modificação não intencional ou potencialmente maliciosa dos dados. Ao conter e proteger variáveis ​​dentro de uma classe, ela permite que a classe e os objetos que ela cria funcionar como peças independentes e independentes que funcionam dentro da máquina do próprio programa.

Através de variáveis ​​de encapsulamento e certos métodos só podem ser interagidos através das interfaces designadas pela própria classe.

Setters e getters

As interfaces usadas para interagir com variáveis ​​encapsuladas são geralmente chamadas de métodos Setter e Getter, porque são usados ​​para definir e recuperar os valores das variáveis. Como existem métodos em uma classe ou objeto, eles podem acessar e modificar variáveis ​​privadas, enquanto você não poderá fazê -lo de fora da classe. Quando você instanciou o seu mycar Objeto, você essencialmente usou seu construtor como um método inicial de setter.

Tente escrever um conjunto de métodos para definir e obter o valor de um dos mycar variáveis.

def set_model (self, new_model): self.__model = new_model def get_model (self): return self.__modelo 

Pode parecer muito trabalho extra, mas realmente não é difícil. De um modo geral, é assim que você deve estruturar suas aulas e trabalhar com variáveis ​​de classe.

Pensamentos finais

O encapsulamento é uma parte importante da programação orientada a objetos. É uma grande parte do que faz com que os objetos na programação tenham um desempenho mais parecido com objetos físicos no mundo real. Ele também serve para proteger os dados armazenados em seus objetos e fornece controle e convenções de como você deve lidar com o fluxo de dados dentro e fora das aulas.

Exercícios

  1. Fazer todas as variáveis ​​no Carro classe privada.
  2. Tente imprimir um de fora da aula.
  3. Modifique o Siga em frente Método para usar a variável privada modelo, e chame.
  4. Crie um método Setter para uma das variáveis.
  5. Use o método do setter que você criou para alterar o valor de uma variável.
  6. Crie um método getter para a mesma variável que o método do setter.
  7. Use seu método getter para acessar e imprimir essa variável.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Como construir um aplicativo Tknter usando um objeto orientado…
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Mastering Bash Script Loops
  • Ubuntu 20.04 truques e coisas que você pode não saber
  • Coisas para instalar no Ubuntu 22.04
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Ubuntu 20.04 Guia
  • Computer Math Basics: binário, decimal, hexadecimal, octal