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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import math class Circulo: def __init__(self, raio): self._raio = raio @property def raio(self): return self._raio @property def area(self): return self.raio ** 2 * math.pi @property def circunferencia(self): return self.raio * 2 * math.pi @raio.setter def raio(self, value): assert value > 0, 'O valor do raio deve ser maior que 0' self._raio = value c = Circulo(5) print(c.area) c.raio = -1 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:
...