eu sou eu que assim eu Deus que nada Oi para todo filas fala pessoal sejam bem vindo a mais um vídeo aqui no canal da pai tornando e nesse vídeo nós vamos falar sobre serialização de objetos com a linguagem Python mas Caio Que que é serialização de objetos Calma que a gente vai falar sobre isso e qual módulo nós vamos utilizar para Célia de serialização de objetos existem alguns módulos que a gente poderia utilizar com biblioteca Python como marchar o Chevy dieta é o Jason Mas aí o Jason binário que o modo que a gente vai utilizar a maizena tudo de forma binária a gente consegue perder pegar o byte daquela daquela informação e o modo nós vamos utilizar eu paico então Import ai qual que é a vantagem o pai que ele já é nativo do Pai tô com vocês vão precisar importar não vou fazer nada só não vou precisar importar importar vocês vão precisar vocês vão precisar baixar downpipe está o pai como ou qualquer coisa do tipo porque o pai com já era o pai que eu já e do pai tá ok pessoal então vamos começar a entender o que que a serialização de objetos e fala isso é o mais simples possível serializar um objeto é pegar algo que está em memória e torná-lo persistente por exemplo eu tenho lá na Class mais fácil uma lista x = uma lista dois três quatro perfeito eu tenho quando eu rodas meu código o pai tá aqui tem o deixar um input AC input e vamos mudar esse meu código ele deixou lá ele tá esperando a gente alguma coisa vai ter que eu carreguei x é igual uma lista de um dois três quatro Então esse meu objeto esse meu objeto x que você der um tapete a gente vai ver que ele é uma distância ele é do tipo list a gente tá carregado na memória com os valores um dois três e quatro só que esses valores estão na memória eles não são persistentes se eu digito algo aqui no meu meu console e o input passou para próxima linha acabou o programa fechou e liberou a memória ou em algum outro ou em alguma outra situação que nosso garbage collector nosso coletor de lixo passou limpando tudo a gente perdeu esse dado da nossa memória a gente não consegue mais recuperar esse dado da memória quando eu Cerealista esse objeto eu eu armazeno este este objeto dentro de uma dentro Nossa Gabi do nosso SSD de forma persistente ou seja mesmo que aquilo seja Limpo da memória a gente tem esse E aí fala que aí é só pegar esse arquivo é só pegar isso daqui um dois três quatro jogar no arquivo texto e depois dá um aprende numa lista por como você saberia que esse um dois três quatro é uma lista ai to formally se eu coloco list antes tá tudo bem é uma forma de resolver o problema só que dessa forma vocês não estão trabalhando só o binário então se eu aqui vai ficar maior você vai perder precisão nos seus dados se você tiver um número de ponto flutuante muito grande quando você for salvar um arquivo texto você vai perder precisão daquele dado agora quando você salva salva em binário ou seja sem bit a bit do que estava na memória então se você tem o número de ponto flutuante grande com muitas casas decimais você não vai perder não você não vai perder informação Você vai continuar armazenando o exato número que tinha na sua memória o seu disco rígido e outra regra para que algo seja ser realizado por que a gente consiga restituir esse objeto através de uma lógica que o pico usa da mesma forma que ele estava antes é realizado por exemplo eu tenho essa minha lista eu vou ser realizar essa minha lista em binário só que quando eu precisar nessa informação eu tenho ela novamente dentro de uma lista com os mesmos valores dentro sempre assim se eu se eu consigo serializar um objeto mas não consigo torná-lo ele o que ele era antes de ser serializado isso não é uma serialização ok pessoal então eu tenho que armazenagem valor de forma persistente que estava na minha memória e conseguir trazer esse valor da mesma forma que ele era antes então vamos mostrar como que nós vamos fazer isso como eu já falei para vocês nós vamos utilizar o modo pai qo e eu aqui eu vou primeiro vou mostrar alguns sites mais simples falar que x = 1 Se eu der um print o print Type i x eu espero que tá todo mundo aqui já saiba o que vai acontecer ele vai mostrar que ele é um objeto da classe Indy ele mostrou doces É ué E aí pessoal não entendi porque tá mostrando 2 o cliente Type X e se É ué eu tô mostrando duas vezes gente o que que tá acontecendo aqui não tô entendendo E aí não controlar a pagar Import Import paico Olá aqui é o plástico é igual a um eu vou dar um print no x o jeans não é possível alguém tá conseguindo enxergar aqui que tá acontecendo aqui rodando pai com um histórico tô dando aqui no palco o poder tirar outro arquivo E aí e aqui eu tinha criado o arquivo com o nome pai comprar mostrar que dá um problema para você se eu tivesse importação ver se a esposa acontecendo É isso mesmo aí que eu eu salvei se o arquivo aqui com o nome de pai coisa altamente para mostrar que estar em um erro na hora de utilizar o paico mas eu não Previ esse erro porque aqui eu estou utilizando a minha brotech importando o paico que é a biblioteca do Pai com que vem Nativa com o Python só que eu chamei esse meu arquivo como o paico então a ordem de importação é o próprio arquivo então aqui eu tô importando o meu próprio arquivo tem que acontece isso meio que fica na recursivo porque ele vai executar duas vezes só mas quando eles acontecer meu código ele vai importar ele mesmo e esse mesmo e esse arquivo ele vai lá mostrar x = 1 e print-x quando ele entrou na linha da importação Ele me mostrou o x = 1 nas próximas linhas eles ele está pintando novamente porque eu estou importando o próprio arquivo então para isso vou ter que dar um name colocar aqui pai com um agora Ah pois é que tá em cima código vai mostrar apenas uma vez Então vamos voltar por nós estávamos que eu tava falando do Type que executo Type DX aqui ele vai ser um objeto do tipo inteiro então eu posso ser realizar esse objeto como que eu vou fazer isso eu vou utilizar o damp existe o Dan buildups que eu já vou mostrar a diferença para eles é a diferença deles para vocês pessoal que eu posso fazer assim pai cole ponto Dantes e aqui ó vocês podem ver que a diferença entre o dump e o dampz o W ele vai receber apenas o objeto o damp ele vai receber o objeto e um arquivo então o dando pra ele vai salvar aquilo nenhum arquivo o damp o Dantes com é se não ele vai apenas retornar stream stream binária e representa aquele objeto serializado então se eu vim aqui da anp se o esse aqui é de stringher eu passar objeto x seu jeito que esse meu corte aqui não acontece é porque eu não pintei então print e aqui hoje é quanto x Vamos mostrar aquele mostrou essa Spring toda louca porque vocês têm que tá em binárias são os bytes de memória que representa este valor aqui então vocês podem ver que aqui tem um bebê antes que no pai tô sempre nós temos um bebê antes da string significa que elas tem ninguém binária e nós podemos utilizar os métodos em Cold para codificar para binário e de Cold para descodificar para binário Ok para que esse daqui é um exemplo muito simples eu poderia ser realizar uma lista por exemplo dois três quatro poderia ser problema nenhum vamos rodar aqui e aqui ele já mostrou essa minha lista Caio o pai com Então como está em binário aqui tem abrir esse arquivo não vai conseguir entender nada então eu posso utilizar isso como criptografia não o pai como não é um meio de criptografia isso é o Camaro dúvida da maioria das pessoas o pai com não está criptografam dos seus dados ele está serializando até porque se alguém Oi gente como o paico serialize esses objetos mesmo que ele não saiba que aquele objeto for ser realizado pelo paico ele consegue tentar de se realizar Se ele souber a forma na qual foi ser realizado Ok então o que a gente não é uma resto uma forma de fotografia que você não vai conseguir voltar os dados que eles eram antes até porque eu vou mostrar o método load para vocês o método loads ele vai transformar isso daqui que a gente tinha não quer antes na nossa lista em Python então isso daqui não é criptografia porque o próprio método lousa própria regra para ser uma serialização é fazer com que aquilo volte a ser o que ela eu quero antes de feliz da vida que fotografia né que a fotografia a gente não quer isso não é que eu posso fazer um pai Cole o pai com ponto Loures e aqui eu vou passar o x eu vou passar na verdade isso daqui uns 30 é igual a última difícil mas eu vou não strengh as esse daqui é que eu vou passar a string se executa esse meu código não acontece nada porque eu não pintei frente vai com o ponto Loures hum hum pai com daqui me mostrou a nossa lista lembra que a esfinge era aquele era aquela stringhi binárias de bytes e que o Daniel fez para mim agora quando eu te dizer loads ele conseguiu reverter isso para exatamente o que eu tinha antes uma lista um dois três e quatro se olhar o tipo Type deste valor desse retorno para mim o Type the loads de pai coloured streams quando executa esse meu código e vai mostrar que leva da classe list então a gente persistir os dados eu consegui é transformar ser eles a esses dados em binário e voltar com que o que eles eram antes isso aqui na maioria das empresas ninguém trabalha com o arquivo texto vejo que muita gente tem ter utilizado o arquivo de texto mas não é isso que acontece na maioria das empresas eles utilizam arquivos com o pai com marcha alconchel vi ou com qualquer outra biblioteca de serialização até o Jason é muito utilizado mas não é o para o mesmo propósito que o é para gente o pai que a pessoa arquivo mais curto mais difícil de ser lido ok pessoal agora que que eu posso fazer que eu mostrei como a lista com inteiro poderia por exemplo utilizar um dicionário vamos vir aqui o dicionário chama para o seu nome falar que é Caio Oi e a idade idade é de 20 Olá seja curta esse meu código vai mostrar aquele daquelas idict seu tiro tá aí para ti ele vai me mostrar esse meu dicionário então aqui eu poderia passar a posição nome por exemplo agora eu consigo acessar os meus dados e foram serializadas mas eu consegui trazer em eles de volta só que esse daqui também saiu memória a string está em memória o que eu me retornou do louro somente foi pintado não salvei se daqui Definitivamente eu desligar meu computador eu não vou saber mais ver que tinha nesses 30 aqui o que tinha dentro desse dicionário então por isso nós vamos persistir os nossos dados vamos ser realizar eles e salvar dentro de um arquivo isso que aconteceu então aqui eu vou criar O que é uma classe vamos começar a criar no pelo mais básico x é igual a nossa stream um dois três e quatro perfeito e agora eu vou abrir uma vou abrir um arquivo Ark open o o pen aqui eu vou chamar esse arquivo de eu pensar arquivo. py KL para utilizar o padrão que já é mais utilizado mas já vi gente utilizando pck também mas eu utilizo pkl mesmo é aqui qual que é o modo que a gente tem que abrir esse arquivo a gente quer escrever valores dentro dele White porque a gente não vai escrever valores normal a gente vai escrever em binário então WB a gente salvar esses arquivos de forma binária a e agora eu preciso ser realizados objetos lembra do danos que a gente frisou agora a gente vai utilizar mais o Dantes como é se distingue a gente vai utilizar o dump então se eu venho aqui pai com ponto damp ele precisou a gente pode olhar aqui com o pai só se der para a gente e um objeto e de um arquivo dump bom então eu vou passar objeto que é o meu x e no arquivo é o Arc quando eu executo esse código aqui ele criou aqui e aqui em cima para mim um arquivo chamado aqui o ponto dkl foi exatamente porque aqui eu abro este arquivo a gente não consegue entender nada que tem aqui porque ele está em binário Mas eu posso utilizar o load agora lembra que a gente tava utilizando loads a gente pode utilizar o molde então possa vir aqui paico. Load eu fiz do arquivo então arte e agora quando a gente executar não vai acontecer nada porque não pintei na tela aqui de um erro vai para o ponto load acho que tá que eu preciso olhar para dentro uma variável né já que eu não tô brincando então eu vou jogar para dentro de retornou re tornou é igual a pai com o ponto longe e e quando eu executo esse código aqui ele deu erro de novo ah ah tá perfeita você tiver outro erro porque aqui eu abri o arquivo no modo escrita mas agora para ler esse arquivo precisa abrir no modo leitura binária RB Agora sim quando você vai se meu código agora eu dou um print retornou vamos executar aqui ele me ele me retornou a lista um dois três quatro que a gente tinha pego lá do arquivo pkl que achar que a gente não tava entendendo nada a gente conseguiu fazer charque voltar a ser exatamente o que ele era antes da serialização eu não preciso só com o arquivo posso fazer com uma classe bless pessoa e ela vai ter um método de classe Amado nome vai ser igual a Kaioh e o método idade vai ser igual a 20 e aqui eu vou ser realizar com uma pessoa a pessoa em letra maiúscula e aqui vou passar o arquivo quando eu executar isso daqui ele vai me retornar um objeto do tipo pessoa então funcionou agora quando eu dar um ponto eu posso utilizar.
Nome ele vai ter que mostrar Caio então Caio ou ponto idade que tem mostrar 20 a 20 de novo você olhar no Arquivo ele tem esses valores aqui dentro a gente eu tô abrindo um arquivo no modo o texto do pai Charme então ele não consegue nem mostrar os arquivos fica todo esses caracteres indecodificável daqui pelo pai charme que o próprio pai Charme Não entendi OK mas só para mostrar para vocês o tamanho Como que está o arquivo tá então serializer uma classe agora vou serializar um objeto de Instância por isso aqui é um objeto de classe cless chamar de pessoas ela vai ser não precisa de verdade lugar nenhum aqui eu quero que a defe Unity aqui eu vou receber dois parâmetros nome idade nome idade é selfie ponto nome e é igual a nome e selfie. Idade é igual a idade e agora vou criar uma Instância deste deste valor ou falar que tem um pessoa um vai ser igual a pessoas aqui dentro vou passar o nome de Marcos e a idade de 21 e que eu vou serializar tem um quando eu executar esse meu código que aconteceu ele mostrou o 21 ele não mostra ouvinte mas eu já eu já tinha armazenado 20 dentro do meu arquivo posso pecar Hélio agora O arquivo está dentro desse tamanho sabe por quê que não mostrou o 20 Ele não mostrou o Caio Se eu colocar o nome fica mais fácil para a gente entender que tinha pintar o nome nem que ele vai mostrar o Caio ou Marcos ele vai mostrar o Marcos porque aqui eu abrir o arquivo no modo escrita no modo White então quando eu estou escrevendo estou serializando que que acontece acontece que ele tá pagando tudo que tinha no arquivo e escrevendo aquilo que eu acabei de escrever então por exemplo se eu quisesse abrindo modo aprendi agora sim eu quero ser realizar pessoa e quando eu executar esse meu código ele vai mostrar Marcos que era o primeiro que tinha sido serializado concorda comigo só que porque eu tinha realizado Marcos antes do código primeiro que eu tinha ser realizado era o pessoa a classe pessoa só que eu depois tinha com o Haiti ele tinha pagado a pessoa salvo o P1 aí depois eu só veio o pessoa de novo ok só deu para entender isso então vamos lá aqui ele me retornou o Marcos mas eu não tenho dois eu não tenho tanto o Marcos o pessoas aqui e o pessoa que é o Marcos e o Caio tem umas porque ele me retornou o som aqui que tá o problema pessoal não problemas Como que o pai como se comporta né Se eu der em si mesmo código novamente aquele vai enfrentar Marcos e Caio então para cada objeto que eu tenho ser realizado dentro do meu do meu arquivo eu tenho que download e então será que eu seria liso terceira dizer de novo né eu vou ser realizar o objeto um dois três quatro eu sei onde é que o país código aqui ele vai te mostrar Marcos Caio Teoricamente eu não sei se esse mesmo Marcos cai cai por quê que ela que eu tinha esquecido de comentar essa linha aqui que tava com o pessoa então série dizer Pessoas duas vezes se eu executo novamente o load load. Nome aqui não vai ser mais longe quanto o nome desse apenas retornou porque o quarto objeto tem ser realizado dentro do nosso arquivo é uma lista e a lista não tem ponto nome ela não é um objeto então aqui ele mostrou Marcos Caio Caio e um dois três quatro aqui pessoal outra coisinha que eu posso mostrar para vocês se eu quiser eu posso fazer a mesma coisa tudo que eu fiz aqui eu posso utilizar assim eu não foi executar aqui mas só pra vocês saberem que eu posso é aqui eu vou abrir o arquivo aqui pkl no modo rite B é assar aqui eu fiz eu quisesse dar um damp pai com o ponto damp.