Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Endereço em que o objeto aponta

No vídeo, o professor Nico disse que quando criamos um objeto e atribuímos a ele um outro objeto já existente, ele passa apontar para o endereço de memória do objeto já existente. De fato, quando testei isso realmente ocorreu e quando eu fazia uma alteração em um o outro também era alterado.


Minha dúvida é: teria como eu igualar objetos de forma que eles não apontassem para o mesmo endereço de memória ?

tipo o novo objeto apontar para uma cópia do endereço de forma que um não consiga fazer alterações no outro, isso é possível ?

2 respostas

Faala Lucas, tudo bem?

Para fazer isso, você pode utilizar o módulo copy. Por exemplo:

from copy import copy

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto ... {}".format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite


conta_1 = Conta(123, "Nico", 200.0, 1000.00)
print(f'Titular Conta 1: {conta_1.titular}')
conta_2 = copy(conta_1) # fazendo a cópia do objeto
print(f'Titular Conta 2: {conta_2.titular}')

print("\n--Realizando mudanças--")

# Vamos mudar o nome do titular da conta 1
conta_1.titular = "Jorge"
print(f'Titular Conta 1: {conta_1.titular}')
print(f'Titular Conta 2: {conta_2.titular}') # O nome do titular da conta 2 não mudou :)

Dessa forma, quando você alterar em um objeto o outro não será modificado.

Qualquer dúvida é só falar. Abraços e bons estudos!

solução!

Muito Obrigado, Nádia!

Resposta rápida, satisfatória e bem ilustrada.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software