Problema na classe Calculadora

Problema na classe Calculadora

by Antônio Fittipaldi -
Number of replies: 2

Boa noite,

Ao criar uma calculadora "vazia" e usar o método eval, todas as outras calculadora criadas "vazias" acabam saindo com o mesmo dicionário do que a eval modificou da primeira criada. Pode ser que as calculadoras criadas façam referência oa mesmo objeto?

Exemplo:

>>>hp = Calculadora()

>>>hp.eval('var 3 =')

3

>>>hp.dic

{'var' : 3}

>>>tp = Calculadora()

>>>tp.dic

{'var' : 3}

 

In reply to Antônio Fittipaldi

Re: Problema na classe Calculadora

by José Coelho de Pina -

Pode ser que as calculadoras criadas façam referência oa mesmo objeto?

Se estão fazendo referência ao mesmo objeto há algo errado.
Para saber se estão fazendo referência ao mesmo objeto escreva ">>> hp.dic is tp.dic".

[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> dicio1 = {'a': 11, 'b': 22, 'c': 33}
>>> dicio2 = dicio1 # dicio2 é um apelido para dicio1
>>> dicio2['a'] = 44
>>> dicio2
{'a': 44, 'b': 22, 'c': 33}
>>> dicio1
{'a': 44, 'b': 22, 'c': 33}
>>> dicio3 = {'a': 44, 'b': 22, 'c': 33} # é um outro dicionário
>>> dicio3 == dicio1
True
>>> dicio3 == dicio2
True
>>> dicio3 is dicio1
False
>>> dicio3 is dicio2
False
>>> dicio1 is dicio2 # fazem referência (= são apelidos) a um mesmo objeto
True
>>> dicio3['a'] = 55
>>> dicio1
{'a': 44, 'b': 22, 'c': 33}
>>> dicio2
{'a': 44, 'b': 22, 'c': 33}
>>> dicio3
{'a': 55, 'b': 22, 'c': 33}
>>> 
In reply to José Coelho de Pina

Re: Problema na classe Calculadora

by Antônio Fittipaldi -

Consegui resolver o problema, era uma sutileza no método __init__.

Obrigado pela resposta