23 de agosto de 2021

O jeito pythonico das propriedades no Python - parte 2

Este post é uma sequência deste outro post sobre os getters, vale apena conferi-lo antes.

Após entendermos melhor como funcionam as propriedades em Python e aplicarmos os getters em nossa classe Circulo, ficamos com a pendência de entender como podemos agora aplicarmos os setters. O principio é muito similar e simples. Para isso basta definirmos o método em questão e decorá-lo com @nome_da_propriedade.setter.  

Aproveitei também para já colocar uma validação no método e passei a utilizá-lo no método __init__. A criação é muito simples e prática, apesar de a API do setter não ser tão intuitiva, seu funcionamento é tão simples como a criação dos getters. Por se tratar um método podemos inclusive fazer outras computações nele, como por exemplo criar um setter para a área:

Como podemos ver, definimos a partir da área o novo raio do circulo, também colocamos uma validação para os valores serem maiores que zero e conseguimos assim ter uma classe completa.

Como em Python também podemos remover alguma propriedade usando a palavra reservada del, também podemos definir métodos que lidam com este comportamento. Como no exemplo abaixo:

Fazer esse tratamento para o del é algo muito interessante, podemos através deste método fazer muito mais coisas que apenas limpar uma propriedade, como por exemplo, realizar uma limpeza de outro recursos associados a propriedade (algo como um delete em cascata).

A principal vantagem desse tratamento de propriedades no Python é o fato de podermos adicionar as validações posteriormente. Hoje em dia existem muitos outros tipos no Python para ajudar a carregar valores, como as dataclasses e as namedtuples, que valem muito apena serem estudadas, mas com certeza as propriedades ainda são muito utilizadas.

Nenhum comentário:

Postar um comentário