Maison >développement back-end >Tutoriel Python >Comment accéder aux attributs sans exception en Python ?

Comment accéder aux attributs sans exception en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 13:35:02922parcourir

How to Access Attributes without Exceptions in Python?

Accès aux attributs sans exceptions

Lorsque vous travaillez avec des objets, vous pouvez rencontrer des scénarios dans lesquels vous devez déterminer si un attribut existe avant de l'utiliser. Prenons l'exemple suivant :

>>> a = SomeClass()
>>> a.property
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'

Pour éviter de telles erreurs, vous pouvez utiliser la fonction hasattr().

Utilisation de hasattr() :

hasattr() accepte deux arguments : un objet et un nom d'attribut. Il renvoie True si l'objet a l'attribut spécifié et False sinon.

>>> if hasattr(a, 'property'):
>>>     a.property

Vous pouvez également intercepter l'exception AttributeError à l'aide d'un bloc try/sauf :

>>> try:
>>>     a.property
>>> except AttributeError:
>>>     # Handle missing attribute

Approche pythonique :

En Python, il est courant de demander pardon plutôt que la permission. Cela signifie tenter d’accéder à la propriété et gérer toutes les exceptions qui pourraient survenir. Cette approche peut souvent être plus concise et efficace :

>>> a.property

Considérations relatives aux performances :

Si vous vous attendez à ce que la propriété soit présente la plupart du temps, accédez-y directement peut être plus rapide que d'utiliser hasattr(). Cependant, si la propriété est susceptible d'être manquante fréquemment, hasattr() sera généralement plus efficace que la gestion répétée des exceptions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn