9.5 Exercícios:
- Adicione o modificador de visibilidade privado (dois underscores: ) para cada atributo e método da sua classe Conta .
class Conta:
python
def __init__(self, numero, titular, saldo, limite=1000.0): self. numero = numero
self. titular = titular self. saldo = saldo self. limite = limite
Tente criar uma Conta e modificar ou ler um de seus atributos “privados”. O que acontece?
- Sabendo que no Python não existem atributos privados, como podemos modificar e ler esses atributos? É uma boa prática fazer isso?
Dica: teste os comandos print(conta. numero) e print(conta._Conta numero . O que
ocorre?
- Modifique o acesso para ‘protegido’ seguindo a convenção do Python e modifique o prefixo por apenas um underscore _ . Crie métodos de acesso em sua classe Conta através do decorator @property .
class Conta:
python
def __init__(self, numero, titular, saldo, limite=1000.0): self._numero = numero
self._titular = titular self._saldo = saldo self._limite = limite
@property
python
def saldo(self): return self._saldo@saldo.setter
def saldo(self, saldo): if (saldo < 0):
python
print("saldo não pode ser negativo") else:self._saldo = saldo
restante dos métodos escritos no exercício anterior
- Crie novamente uma conta e acesse e modifique seus atributos. O que mudou?
Dica: tente os comandos na seguinte ordem: print(conta._numero) , conta._numero= ‘50’ e
print(conta._numero) . O que ocorre?- Modifique sua classe Conta de modo que não seja permitido criar outros atributos além dos definidos anteriormente utilizando slots .
class Conta:
python
slots = ['_numero', '_titular', '_saldo', '_limite']
python
def __init__(self, numero, titular, saldo, limite=1000.0): self._numero = numero
self._titular = titular self._saldo = saldo self._limite = limite
6. (Opcional) Adicione um atributo identificador na classe Conta . Esse identificador deve ter um valor único para cada instância do tipo Conta . A primeira Conta instanciada tem identificador 1, a segunda 2, e assim por diante.
python
class Conta:identificador =
def __init__(self, numero, titular, saldo, limite=1000.0): # código omitido
self.identificador = Conta.identificador Conta.identificador += 1
CAPÍTULO 10