8.12 Para Saber Mais: Outros Métodos De Uma Classe

O interpretador adiciona alguns atributos especiais somente para leitura a vários tipos de objetos de uma classe, sendo um deles o dict .

Isso acontece porque a classe Conta possui alguns métodos, dentre eles o init () e o

new () , que são chamados para criar e inicializar um objeto desta classe, respectivamente. Caso você queira saber quais outros métodos são implementados pela classe Conta , você pode usar a função embutida dir() , que irá listar todos métodos e atributos que a classe possui.

dir(Conta)

[’ class ’, ’ delattr ’, ’ dict ’, ’ dir ’, ’ doc ’, ’ eq ’,

’ format ’, ’ ge ’, ’ getattribute ’, ’ gt ’, ’ hash ’, ’ init ’, ’ init_subclass ’, ’_

_le ’, ’ lt ’, ’ module ’, ’ ne ’, ’ new ’, ’ reduce ’, ’ reduce_ex ’, ’ repr ’, ’ se tattr ’, ’ sizeof ’, ’ str ’, ’ subclasshook ’, ’ weakref ’, ‘extrato’, ‘deposita’, ‘limite’

, ‘numero’, ‘saca’, ‘saldo’, ‘transfere_para’, ‘titular’]

Dessa lista, já conhecemos o init () , o new () e os métodos e atributos que definimos quando construímos a classe Conta . Na verdade, quando usamos a função dir() , o interpretador

chama o atributo dir dessa lista. Um outro atributo bastante útil é o dict , que retorna um

dicionário com os atributos da classe.

cliente = Cliente(‘João’, ‘Oliveira’, ‘111111111-11’) conta = Conta(‘123-4’, cliente, 1000.0)

print(conta. dict )

#{‘saldo’: 1000.0, ‘numero’: ‘123-4’, ‘titular’: < main .Cliente object at 0x7 f0b6d028f28>, ‘limite’: 1000.0}

Mas não é comum acessá-lo dessa maneira. Esses métodos iniciados e terminados com dois

underscores são chamados pelo interpretador, e são conhecidos como métodos mágicos. Existe outra

função embutida do Python, a função vars() , que chama exatamente o dict

Obtemos o mesmo resultado usando vars(conta) :

de uma classe.

vars(conta)

#{‘saldo’: 1000.0, ‘numero’: ‘123-4’, ‘titular’: < main .Cliente object at

x7f0b6d028f28>, ‘limite’: 1000.0}

Repare que o dict e o vars() retornam exatamente um dicionário de atributos de uma conta como tínhamos modelado no início deste capítulo. Portanto, nossas classes utilizam dicionários para armazenar informações da própria classe.

Os demais métodos mágicos estão disponíveis para uso e não utilizaremos por enquanto. Voltaremos a falar deles em um outro momento.‌


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