No campo da programação orientada a objetos, existem alguns conceitos estabelecidos que ajudam a gerenciar o acesso às propriedades dos objetos. Um desses aspectos centrais são Getters e Setters. No Python, esse conceito, no entanto, não é implementado da mesma forma que em outras linguagens orientadas a objetos. Neste guia, você aprenderá como usar Getters e Setters de forma mais eficaz em Python para controlar o acesso às propriedades de suas classes.

Principais conclusões

  • Getters e Setters são métodos que controlam o acesso às propriedades.
  • No Python, existe uma maneira elegante de implementar Getters e Setters com o decorador @property.
  • O uso de convenções de nomenclatura personalizadas ajuda a distinguir claramente entre propriedades internas e públicas.
  • A convenção do Python para modificadores de acesso difere de outras linguagens.

Guia passo a passo

Passo 1: Criar uma classe com propriedades

Comece definindo uma classe simples. Suponha que você queira criar uma classe Pessoa que possui um nome como atributo. O nome será armazenado como uma propriedade privada no inicializador.

USO EFETIVO de Getters e Setters em Python

Aqui, _name é declarado como uma propriedade interna, onde o prefixo de sublinhado sinaliza que se trata de uma variável privada.

Passo 2: Adicionar um Getter

Para realizar o acesso à propriedade interna name, você adiciona um método Getter. Este método retorna o valor atual do nome.

USO EFETIVO de Getters e Setters em Python

Passo 3: Adicionar um Setter

Agora, vamos adicionar um método Setter para que o nome da pessoa possa ser alterado. O Setter permite que você defina novos valores para a propriedade interna.

USO EFETIVO de Getters e Setters em Python

Passo 4: Usar @property

No Python, lidar com propriedades se torna ainda mais elegante quando você usa o decorador @property. Com isso, você pode definir Getters e Setters diretamente na classe, sem precisar criar métodos separados.

USO EFETIVO de Getters e Setters em Python

Passo 5: Lidar com propriedades não públicas

Para garantir que a propriedade interna não seja acessível diretamente de fora, você pode usar o prefixo __ para encapsular ainda mais a propriedade. Essa abordagem garante que o acesso seja feito exclusivamente através dos métodos Getter e Setter.

USO EFICAZ de Getters e Setters em Python

Com essa implementação, garante-se que __name não pode ser acessado externamente.

Resumo – Getters e Setters em Python

Neste guia, você aprendeu como implementar Getters e Setters de forma eficaz em Python para controlar o acesso a variáveis de objeto. Você também conheceu o uso do @property, que torna o código mais limpo e idiomático. Ao encapsular propriedades com um duplo sublinhado, você pode garantir que variáveis internas estejam protegidas contra acesso não autorizado.

Perguntas frequentes

O que são Getters e Setters em Python?Getters e Setters são métodos que controlam e permitem o acesso às propriedades de uma classe.

Como implemento Getters e Setters em Python?Você pode implementar Getters e Setters usando métodos ou o decorador @property.

Qual é a vantagem do @property?O decorador @property permite um acesso elegante e intuitivo aos atributos, sem precisar implementar métodos separados.

Por que as propriedades em Python não devem ser acessíveis diretamente?Acesso direto pode levar a comportamentos inesperados e comprometer a integridade dos dados do objeto; portanto, é melhor controlar o acesso.

O que significa marcar uma propriedade como "privada"?Uma propriedade privada é marcada com um sublinhado (_) ou dois sublinhados (__) à frente, para indicar que não deve ser acessada diretamente de fora.