Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fragilidade do Atributo Estático

Parece que um dos problemas de se criar atributos estáticos desta forma é a possibilidade de também criar uma propriedade pública simultaneamente e de mesmo nome, o que pode gerar um código bastante frágil e confuso:

class Circulo:

    PI = 3.14


circ = Circulo()
circ.PI = 1.23

print( Circulo.PI)    
print ( circ.PI)

#alterando os valores
Circulo.PI = 300.14
circ.PI = 100.230

print( Circulo.PI)    
print ( circ.PI)

Teríamos como saida:

3.14

1.23

300.14

100.23

1 resposta
solução!

Olá Vicente! Tudo certo? Espero que sim. 🙂

Uma opção interessante para tornar o código mais sólido seria tornar o atributo de classe um atributo privado e utilizar o @classmethod para acessá-lo.

O @classmethod é um decorador que pode criar funções que operam os atributos da classe, independentemente dos objetos instânciados.

O código ficaria da seguinte forma:

class Circulo:

    __PI = 3.14

    @classmethod
    def PI(cls):
        return cls.__PI

circ = Circulo()
circ.PI = 1.23

print(Circulo.PI())
print(circ.PI)

#alterando os valores 
# O comando abaixo resultará em um erro a partir de agora
Circulo.PI() = 300.14

circ.PI = 100.230

print( Circulo.PI)
print ( circ.PI)

Espero ter ajudado! Quaisquer dúvidas, estou à disposição. 😉

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!