9.5 Exercícios:

  1. 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?

  1. 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?

  1. 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

  1. 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?
  1. 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‌‌

⬅️ Capítulo Anterior | Próximo Capítulo ➡️