Junior — Middle
De que maneiras em Python se pode impedir a alteração do estado de um objeto após a sua criação?
sobes.tech IA
Resposta da IA
Em Python, para evitar a alteração do estado de um objeto após a sua criação, podem ser utilizados vários métodos:
-
Utilização de tipos de dados imutáveis — por exemplo, tuplos em vez de listas.
-
Definir propriedades apenas de leitura usando o decorador
@propertysem setter:
class PontoImutável:
def __init__(self, x, y):
self._x = x
self._y = y
@property
def x(self):
return self._x
@property
def y(self):
return self._y
p = PontoImutável(1, 2)
print(p.x) # 1
# p.x = 5 # AttributeError
-
Uso de
__slots__para limitar a adição dinâmica de atributos. -
Criação de classes imutáveis com
namedtupleoudataclassescom o parâmetrofrozen=True:
from dataclasses import dataclass
@dataclass(frozen=True)
class Ponto:
x: int
y: int
p = Ponto(1, 2)
# p.x = 3 # Erro, objeto congelado
- Sobrescrever métodos de alteração de estado (por exemplo,
__setattr__) para impedir alterações após a inicialização.
Estes métodos ajudam a criar objetos com estado imutável, o que é útil para segurança de dados e aplicações multithread.