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.

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.

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.

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.

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.

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.