Python >> Tutoriel Python >  >> Python

Python getattr()

getattr(object, string) intégré de Python la fonction renvoie la valeur du object 's attribut avec le nom string . S'il n'existe pas, il renvoie la valeur fournie sous la forme d'un troisième default facultatif dispute. Si cela n'existe pas non plus, il lève un AttributeError . Un exemple est getattr(porsche, 'speed') qui équivaut à porsche.speed .

Utilisation

Apprenez par l'exemple ! Voici un exemple d'utilisation du getattr() fonction intégrée.

# Define class with one attribute
class Car:
    def __init__(self, brand, speed):
        self.brand = brand
        self.speed = speed


# Create object
porsche = Car('porsche', 100)
tesla = Car('tesla', 110)

# Two alternatives to get instance attributes:
print(getattr(porsche, 'brand') + " " + str(getattr(porsche, 'speed')))
print(tesla.brand + " " + str(tesla.speed))


# Get an attribute that doesn't exist with default argument:
print(getattr(porsche, 'color', 'red'))

Le résultat de cet extrait de code est :

porsche 100
tesla 110
red

Syntaxe getattr()

Le getattr() objet a la syntaxe suivante :

Syntax: 
getattr(object, attribute[, default])         # Get object's attribute value or default if non-existent
Arguments object L'objet à partir duquel la valeur d'attribut doit être tirée.
attribute Le nom de l'attribut sous forme de chaîne.
default La valeur de retour au cas où l'attribut n'existe pas.
Valeur de retour object Renvoie la valeur du attribute de l'instance object ou default si inexistant.

Vidéo getattr()

Valeur renvoyée par getattr()

Le getattr(object, attribute, default) renvoie l'un des éléments suivants :

  • la valeur du object attribute
  • default , si l'attribut n'existe pas
  • AttributeError si ni l'attribut n'existe, ni default est fourni.

Exercice Shell interactif :Comprendre getattr()

Considérez le code interactif suivant :

Exercice : Corrigez l'erreur dans le code !


Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners


Pourquoi utiliser getattr() au lieu du point pour obtenir un attribut ?

Vous avez vu deux alternatives pour obtenir un attribut :

  • getattr(object, attribute_str)
  • object.attribute

Pourquoi utiliser la fonction getattr() plutôt que la syntaxe pointée plus concise ?

Il y a deux raisons principales :

  • getattr() fournit une valeur par défaut au cas où l'attribut n'existe pas alors que la syntaxe à points renvoie une erreur.
  • getattr() permet d'accéder dynamiquement à l'attribut avec la chaîne au lieu du nom. Par exemple, vous pouvez obtenir la chaîne en tant qu'entrée utilisateur, auquel cas vous ne pouvez pas utiliser la syntaxe à points object.attribute car attribute est une chaîne, pas un nom.

Fonctions associées

  • Le getattr() la fonction renvoie la valeur d'un attribut.
  • Le setattr() la fonction modifie la valeur d'un attribut.
  • Le hasattr() la fonction vérifie si un attribut existe.
  • Le delattr() la fonction supprime un attribut existant.

Résumé

getattr(object, string) intégré de Python la fonction renvoie la valeur du object 's attribut avec le nom string .

# Define class with one attribute
class Car:
    def __init__(self, brand, speed):
        self.brand = brand
        self.speed = speed


porsche = Car('porsche', 100)
print(getattr(porsche, 'brand') + " " + str(getattr(porsche, 'speed')))
# porsche 100

S'il n'existe pas, il renvoie la valeur fournie sous la forme d'un troisième default facultatif dispute.

print(getattr(porsche, 'color', 'red'))
# red

Si cela n'existe pas non plus, il lève un AttributeError .

print(getattr(porsche, 'color'))
'''
Traceback (most recent call last):
  File "C:\Users\xcent\Desktop\Finxter\Blog\HowToConvertBooleanToStringPython\code.py", line 12, in <module>
    print(getattr(porsche, 'color'))
AttributeError: 'Car' object has no attribute 'color'
'''

Un exemple est getattr(porsche, 'speed') qui équivaut à porsche.speed .

print(getattr(porsche, 'speed'))
print(porsche.speed)
# Both print attribute value: 100

J'espère que vous avez apprécié l'article! Pour améliorer votre formation Python, vous pouvez rejoindre la populaire et gratuite Finxter Email Academy :

Voulez-vous améliorer vos compétences Python d'une manière amusante et facile à consommer ? Considérez les ressources suivantes et devenez un maître codeur !


Prochain article