Executando verificação de segurança...
2
Carregando publicação patrocinada...
2

Um exemplo é quando você tem um objeto do Python com referências circulares. Referências circulares são situações em que um objeto se refere a si mesmo ou a uma cadeia de outros objetos que, por sua vez, se referem a ele. Por exemplo, considere uma classe Python com um atributo "amigo" que faz referência a outra instância da mesma classe. Se duas instâncias se tornarem amigas uma da outra, é criada uma referência circular. Isso ocorre porque "pessoa1" é amiga de "pessoa2", e "pessoa2" é amiga de "pessoa1".

class Pessoa:
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade
        self.amigo = None
    
    def definir_amigo(self, amigo):
        self.amigo = amigo

# Criando duas instâncias da classe Pessoa
pessoa1 = Pessoa("Ana", 25)
pessoa2 = Pessoa("Pedro", 30)

# Definindo uma referência circular entre as duas instâncias
pessoa1.definir_amigo(pessoa2)
pessoa2.definir_amigo(pessoa1)
import json

# Tentativa de serializar o objeto para JSON
json_data = json.dumps(pessoa1)

O código resultará na seguinte mensagem "TypeError: Object of type Pessoa is not JSON serializable" porque o JSON não pode lidar com referências circulares. Por outro lado, usar o Pickle para serializar este objeto resolverá o problema, pois ele pode gerenciar referências circulares.

import pickle

# Serializando o objeto usando Pickle
pickle.dump(pessoa1, open('pessoa.pickle', 'wb'))