Se o atributo __ serve para torná-los privados, pq usar setter para modificá-los?
Se o atributo __ serve para torná-los privados, pq usar setter para modificá-los?
Se o atributo está como privado ( __ ), isso quer dizer que os mesmos estão encapsulados. Logo, para que possamos realizar qualquer tipo de modificação nos atributos, devemos usar métodos dentro da nossa classe (ou seja, usar o setter).
Se você não definir um método setter ou getter para acessar esse atributo, você não está seguindo os paradigmas da POO
Olá Gabriel, pense comigo, temos uma aplicação de banco, onde, obviamente, o saldo não pode ser acessível nem modificável a nenhum cliente do banco. Por isso o tornamos privado, pois imagine o caos que seria se todos podessem alterar livremente seus saldos não é mesmo? Segue um exemplo:
Class Cliente:
def __init__(self, nome, id)
self.__nome = nome
self.__id = id
self.saldo = 0
# Note que o saldo é público
# Bom, depois de fazer os respectivos métodos `getters`, o banco resolveu publicar seu sistema e João um menino curioso, resolveu dar uma olhada. Quando viu que podia mudar seu saldo, ele imediatamente inseriu o comando:
João = Cliente("João", 73738)
João.saldo = 73829299237373838
Se fosse assim a economia mundial quebraria não é mesmo? Pois todos poderiam acessar todas as informações e alterá-las por um simples comando. Por isso quando estamos construindo uma aplicação, é sempre bom e uma boa prática deixar todas as variáveis privadas por um __
, pois assim temos o controle do que o usuário pode ou não pode ver, acessar e modificar. No caso, se você estivesse fazendo um sistema bancário, você poderia criar um setter
do nome, pois pessoas podem querer mudar suas identificações ou até mesmo o titular da conta, mas não para o saldo, pois isso a pessoa não pode simplesmente alterar. Fica a dica ;) Se te ajudei marque o tópico como solucionado :-D