Erro de referência do Python

Erro de referência do Python
Os programas Python consistem em muitos erros e exceções, e alguns deles são construídos em. Esses erros e exceções ocorrem sempre que o intérprete Python encontra erros. Um programador não está imune a erros ao escrever um programa Python e provavelmente encontrará erros não tratados. Quando tentamos abrir um arquivo que não existe ou divida um número por zero, uma exceção é lançada. Sempre que esses tipos de erros ocorrem, o Python cria os objetos de exceção. Se eles não forem tratados corretamente, Python imprime um rastreio desse erro. Este artigo é sobre uma das exceções no Python que é chamado de erro de referência.

Erro de referência

No Python, muitos erros e exceções são categorizados em dois grupos principais: erros de sintaxe e erros lógicos. Erros lógicos também são conhecidos como exceções. Exceções ocorrem quando operações incorretas ou ilegais são acionadas. Um erro de referência se enquadra na categoria de erros lógicos. Erros lógicos são aqueles que ocorrem no tempo de execução do código. Quando um proxy de referência fraco é empregado para acessar um referente coletado da memória, um erro de referência é acionado. Um erro de referência faz parte das exceções internas do Python. Essas exceções são lançadas após o erro que ocorre.

Em Python, um programa tem 4 funções - L, M, N e O. Se usarmos um programa no qual a função L chama função m, função m chamadas função n, que por sua vez chama a função o. Agora, suponha que haja uma exceção que ocorra na função n, mas que não é resolvida ou manuseada. A exceção é passada para funcionar M e depois funcionar L. Se o erro não for resolvido, ocorre um erro e o programa poderá falhar.

Agora, vamos discutir um exemplo de erro de referência.

Exemplo 1:

Neste exemplo, usamos uma função interna no python para nos referir a um objeto. Veja o código em detalhes. Primeiro, importamos os módulos e criamos uma classe chamada "check_object" na qual o objeto é passado. Aqui, usamos a função def_init_ (self, nome) e depois definimos “self.nome ”como o nome. Agora, execute o seguinte código em seu sistema:

importar gc como g
importar fracos como WK
classe check_object (objeto):
def __init __ (self, nome):
auto.nome = nome
def __del __ (self):
imprimir ('excluir % s') % self
print ('objeto de referência =', a.nome)

O resultado que obtemos ao executar o código anterior é fornecido na ilustração a seguir. Você pode ver que recebemos um erro de referência que afirma que o objeto fracamente referenciado não existe mais.

Aqui, podemos ver que, pedindo para imprimir um objeto de referência sem uma definição adequada de objeto, obtemos um erro de referência.

O módulo de referência fraco permite um programador Python para formar as referências fracas a objetos. Uma referência fraca a um objeto não é suficiente para manter o objeto à tona e é a única referência restante ao referente. Esses referentes são referências fracas ou coleções de lixo que podem ser destruídas pelo referente e pela memória que liberta podem ser usadas para outra coisa.

Exemplo 2:

Vamos dar outro exemplo para entender melhor este erro. Como discutimos anteriormente, quando qualquer objeto é fracamente referenciado no código, ocorre um erro de referência. Usando o código a seguir, agora tentamos imprimir os objetos antes e depois de usar o comando delete.

Aqui, usamos uma função interna no Python para nos referir a um objeto e chamá-lo de "obj1". Uma classe chamada "check_object" é criada. Aqui, definimos duas funções - "_init" e "_del_" - para executar as funções separadas.

Depois disso, usamos o objeto criado da classe no comando proxy, que é WK.Proxy (obj_check). Para imprimir após a declaração, o “obj_check” criado é definido como nenhum.

importar gc como g
importar fracos como WK
classe check_object (objeto):
def __init __ (self, nome):
auto.nome = nome
def __del __ (self):
imprimir ('excluir % s') % self
obj_check = check_object ('objeto')
ABC = semana.Proxy (obj_check)
print ('Antes de excluir =', ABC.nome)
obj_check = nenhum
print ('Após a exclusão =', ABC.nome)

Quando executamos o código anterior, obtemos a seguinte saída:

Como você pode ver, quando executamos o código, obtemos um erro de referência porque, antes de excluir o objeto, o python ignora a exceção na função e causa um erro porque os operando eram de um tipo diferente e não o suportam.

Para resumir por que o erro de referência ocorre, podemos dizer que quando você remove um objeto de um programa, ocorre um erro de referência que causa todas as referências ao objeto a ser removido. A maneira mais comum que esse erro ocorre é se o seu programa tiver Classe 1 e Classe 2, e digamos que a Classe 2 seja excluído, ficamos com apenas classe 1 sem encadernação à classe 2. A relação entre as classes 1 e 2 permanece, mas não há referência à classe 2 porque foi removida ou chamada de volta. O erro pode ser causado por equívocos das raízes de origem e pelo programa que você está usando pode não saber onde encontrar o link.

Como resolver erros de referência no Python?

Erros de referência podem ser resolvidos usando uma instrução IF-ELSE ou uma instrução TRY-WITHOUT. Podemos ver o código para resolver o erro de referência no exemplo a seguir.

Exemplo 3:

Neste exemplo, demonstramos o código que pode ser usado para resolver um erro de referência em um programa. Este código não mostra nenhuma saída. Ele simplesmente contém alguns pontos que você pode seguir em seus programas para evitar os erros de referência.

def test_proxy_ref (self):
a = c ()
a.bar = 1
Ref = fracos.proxy (a, eu.ligar de volta)
del a
def check (proxy):
Proxy.bar
extra_collect ()
auto.Assertraises (fracos.ReferenceError, check, ref)
se test_support.is_jython:
auto.Assertraises (fracos.ReferenceError, Bool, ref)
outro:
auto.Assertraises (fracos.ReferenceError, Bool, fracos.proxy (c ()))
auto.assert_ (self.CBCALLED == 2)

A primeira função que usamos é def test_proxy_ref (self) que é usado para definir uma referência de proxy de teste para si mesmo. Em seguida, definimos que a variável A = C () e A.bar = 1.

Agora, usamos a sintaxe de referência “Referência fraca.proxy (a, eu.retorno de chamada) "para chamar de volta a referência mencionada. Esta função de retorno de chamada garante que todas as referências sejam invalidadas antes que os retornos de chamada sejam chamados. É importante que a primeira referência seja chamada de volta ou em termos simples. A referência mais recente é limpa primeiro antes que a segunda referência seja chamada. Este é um teste que invalida todas as referências antes que qualquer retorno de chamada seja feito, então há apenas uma menção à função "_weakref". Para verificar o proxy, usamos a verificação de funções (proxy): proxy.bar. A função de coleta extra é usada para chutar o programa Python para o dispositivo e ajuda com os retornos de chamada que o tópico precisa chamar.

A função if-else no python agora é usada. Esta função é criada para verificar a frase de teste e executar a declaração "se" em um caso quando a condição é verdadeira. Caso contrário, a declaração "else" é executada.

Conclusão

Neste post, aprendemos que um erro de referência ocorre devido à fraca referência de procuração. Muitas vezes, um erro pode ocorrer em um programa, um erro de sintaxe ou um erro lógico. Um erro de referência se enquadra na categoria de erro lógico. Explicamos em que casos um erro de referência ocorre através de um exemplo. Experimente esses exemplos em seu sistema para entender melhor o tópico dos erros de referência.