Erreur de référence Python

Erreur de référence Python
Les programmes Python comprennent de nombreuses erreurs et exceptions, et certaines d'entre elles sont construites. Ces erreurs et exceptions se produisent chaque fois que l'interprète Python rencontre des erreurs. Un programmeur n'est pas à l'abri des erreurs lors de l'écriture d'un programme Python et est susceptible de rencontrer des erreurs non perdues. Lorsque nous essayons d'ouvrir un fichier qui n'existe pas ou ne divise pas un nombre de zéro, une exception est coulée. Chaque fois que ces types d'erreurs se produisent, Python crée les objets d'exception. S'ils ne sont pas gérés correctement, Python imprime un trace de cette erreur. Cet article parle de l'une des exceptions de Python qui est appelée une erreur de référence.

Erreur de référence

Dans Python, de nombreuses erreurs et exceptions sont classées en deux groupes principaux: les erreurs de syntaxe et les erreurs logiques. Les erreurs logiques sont également connues sous le nom d'exceptions. Des exceptions se produisent lorsque des opérations incorrectes ou illégales sont déclenchées. Une erreur de référence relève de la catégorie des erreurs logiques. Les erreurs logiques sont celles qui se produisent au moment de l'exécution du code. Lorsqu'un proxy de référence faible est utilisé pour accéder à un référent recueilli à partir de mémoire, une erreur de référence est déclenchée. Une erreur de référence fait partie des exceptions intégrées de Python. Ces exceptions sont lancées après l'erreur qui se produit.

Dans Python, un programme a 4 fonctions - L, M, N et O. Si nous utilisons un programme dans quelle fonction l appelle la fonction m, fonction m appelle la fonction n, qui à son tour appelle la fonction o. Maintenant, supposons qu'il existe une exception qui se produit dans la fonction n mais qui n'est pas résolu ou manipulé. L'exception est passée pour fonctionner m puis pour fonctionner L. Si l'erreur n'est pas résolue, une erreur se produit et le programme peut échouer.

Maintenant, discutons un exemple d'une erreur de référence.

Exemple 1:

Dans cet exemple, nous utilisons une fonction intégrée dans Python pour désigner un objet. Regardez le code en détail. Tout d'abord, nous importons les modules et créons une classe nommée «Check_Object» dans laquelle l'objet est passé. Ici, nous utilisons la fonction DEF_INIT_ (Self, Name), puis définissons «Self.Nom ”comme nom. Maintenant, exécutez le code suivant sur votre système:

importer gc en g
Importer des faibles en tant que WK
classe Check_Object (objet):
def __init __ (self, nom):
soi.nom = nom
Def __del __ (Self):
imprimer ('supprimer it% s')% self
print ('référence objet =', a.nom)

Le résultat que nous obtenons en exécutant le code précédent est donné dans l'illustration suivante. Vous pouvez voir que nous obtenons une erreur de référence qui indique que l'objet faiblement référencé n'existe plus.

Ici, nous pouvons voir qu'en demandant à imprimer un objet de référence sans définition d'objet approprié, nous obtenons une erreur de référence.

Le module de référence faible permet à un programmeur Python de former les références faibles aux objets. Une référence faible à un objet ne suffit pas pour maintenir l'objet à flot et est la seule référence restante au référent. Ces référents sont des références faibles ou des collections de déchets qui peuvent être détruites par le référent et la mémoire qui libère peut être utilisée pour autre chose.

Exemple 2:

Prenons un autre exemple pour mieux comprendre cette erreur. Comme nous l'avons discuté précédemment, lorsqu'un objet est faiblement référencé dans le code, une erreur de référence se produit. En utilisant le code suivant, nous essayons maintenant d'imprimer les objets avant et après avoir utilisé la commande de suppression.

Ici, nous utilisons une fonction intégrée dans Python pour faire référence à un objet et l'appeler «OBJ1». Une classe nommée «Check_Object» est créée. Ici, nous définissons deux fonctions - «_init» et «_del_» - pour remplir les fonctions distinctes.

Après cela, nous utilisons l'objet créé de la classe dans la commande proxy qui est wk.proxy (obj_check). Pour imprimer après l'instruction, le «obj_check» créé est défini sur aucun.

importer gc en g
Importer des faibles en tant que WK
classe Check_Object (objet):
def __init __ (self, nom):
soi.nom = nom
Def __del __ (Self):
imprimer ('supprimer it% s')% self
obj_check = check_object ('objet')
ABC = semaine.proxy (obj_check)
print ('avant de supprimer =', ABC.nom)
obj_check = aucun
print ('après la suppression =', ABC.nom)

Lorsque nous exécutons le code précédent, nous obtenons la sortie suivante:

Comme vous pouvez le voir, lorsque nous exécutons le code, nous obtenons une erreur de référence car avant de supprimer l'objet, Python ignore l'exception de la fonction et provoque une erreur car les opérandes étaient d'un type différent et ne le prenaient pas en charge.

Pour résumer pourquoi l'erreur de référence se produit, nous pouvons dire que lorsque vous supprimez un objet d'un programme, une erreur de référence se produit qui provoque la suppression de toutes les références à l'objet. La façon la plus courante pour que cette erreur se produise est que si votre programme a la classe 1 et la classe 2, et disons que la classe 2 est supprimée, nous nous retrouvons avec juste la classe 1 sans liaison à la classe 2. La relation entre les classes 1 et 2 reste mais il n'y a aucune référence à la classe 2 car elle a été supprimée ou rappelée. L'erreur peut être causée par une mauvaise configuration des racines source et le programme que vous utilisez peut ne pas savoir où trouver le lien.

Comment résoudre les erreurs de référence dans Python?

Les erreurs de référence peuvent être résolues à l'aide d'une instruction IF-ELSE ou d'une instruction TRY-without. Nous pouvons voir le code pour résoudre l'erreur de référence dans l'exemple suivant.

Exemple 3:

Dans cet exemple, nous démontrons le code qui peut être utilisé pour résoudre une erreur de référence dans un programme. Ce code ne montre aucune sortie. Il contient simplement quelques points que vous pouvez suivre dans vos programmes pour éviter les erreurs de référence.

def test_proxy_ref (self):
a = c ()
un.bar = 1
ref = faible.proxy (A, soi.rappeler)
Del A
Def Check (Proxy):
Procuration.bar
extra_collect ()
soi.assertraises (faible.ReferenceError, Check, Ref)
Si test_support.is_jython:
soi.assertraises (faible.ReferenceError, bool, réf)
autre:
soi.assertraises (faible.ReferenceError, bool, faible.proxy (c ()))
soi.assert_ (soi.cbCalled == 2)

La première fonction que nous utilisons est Def test_proxy_ref (self) qui est utilisée pour définir une référence proxy de test à soi. Nous définissons ensuite que la variable a = c () et un.bar = 1.

Maintenant, nous utilisons la syntaxe de référence «Référence faible.proxy (A, soi.rappel) "pour rappeler la référence qui a été mentionnée. Cette fonction de rappel garantit que toutes les références sont invalidées avant que les rappels ne soient appelés. Il est important que la première référence soit rappelée ou en termes simples. La référence la plus récente est nettoyée avant la deuxième référence. Ceci est un test qui invalide toutes les références avant que des rappels ne soient faits, il n'y a donc qu'une mention de la fonction «_weakref». Pour vérifier le proxy, nous utilisons le chèque de fonction (proxy): proxy.bar. La fonction de collection supplémentaire est utilisée pour lancer le programme Python dans l'appareil et aide aux rappels que le fil doit appeler.

La fonction IF-Else dans Python est maintenant utilisée. Cette fonction est créée pour vérifier l'expression de test et exécuter l'instruction «IF» dans un cas lorsque la condition est vraie. Sinon, la déclaration «else» est exécutée.

Conclusion

Dans cet article, nous avons appris qu'une erreur de référence se produit en raison de la faible référence proxy. Plusieurs fois, une erreur peut se produire dans un programme, soit une erreur de syntaxe ou une erreur logique. Une erreur de référence relève de la catégorie d'erreur logique. Nous avons expliqué dans quels cas une erreur de référence se produit par un exemple. Essayez ces exemples sur votre système pour mieux comprendre le sujet des erreurs de référence.