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