Python >> Tutoriel Python >  >> Python

Python setattr()

setattr(object, string, value) intégré de Python la fonction prend trois arguments :un objet , une chaîne , et une valeur arbitraire . Il définit l'attribut donné par la chaîne sur l'objet à la valeur spécifiée. Après avoir appelé la fonction, il y a un attribut nouveau ou mis à jour à l'instance donnée, nommé et évalué comme indiqué dans les arguments. Par exemple, setattr(object, 'attribute', 42) est équivalent à object.attribute = 42 .

Utilisation

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

Créer un Car objet porsche avec un nouvel attribut speed et réglez-le sur la valeur 100 :

# Define class with one attribute
class Car:
    None


# Create object
porsche = Car()
setattr(porsche, 'speed', 100)

# What's the value for attribute speed?
print(porsche.speed)
# 100

Configuration vidéo()

Syntaxe setattr()

Le setattr() objet a la syntaxe suivante :

Syntax: 
setattr(object, attribute, value)         # Set or update object's attribute to value
Arguments object L'objet pour lequel l'attribut doit être défini.
string Le nom de l'attribut à définir ou à mettre à jour.
object La valeur à laquelle définir l'attribut.
Valeur de retour None Renvoie Rien. Définit ou met à jour simplement l'attribut.

Exercice Shell interactif :Comprendre setattr()

Considérez le code interactif suivant :

Exercice : Avant d'exécuter le code, devinez le résultat !


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


Application pratique :Python setattr() self

Dans la programmation orientée objet, vous pouvez souvent voir l'utilisation du setattr() fonction intégrée en combinaison avec l'objet self dans le __init__() méthode constructeur.

L'idée est de pouvoir créer une classe avec des attributs dynamiques choisis à l'exécution par l'utilisateur ou le programme. De cette façon, vous pouvez créer des classes de conteneur contenant des attributs arbitraires.

class Person:
    def __init__(self, attributes):
        for key, value in attributes.items():
            setattr(self, key, value)


# Create two different persons
alice = Person({'name': 'Alice', 'income': 180000, 'eyes': 'blue'})
bob = Person({'firstname': 'Max', 'lastname': 'Power'})


# Different persons, different attributes
print(alice.name + ' ' + str(alice.income) + ' ' + alice.eyes)
print(bob.firstname + ' ' + bob.lastname)


# Output:
'''
Alice 180000 blue
Max Power
'''

Notez que c'est un moyen très pratique de créer des classes avec des noms d'attributs différents. Cependant, vous devez vous demander si vous pouvez améliorer votre modélisation orientée objet car le concept de classe peut ne pas convenir si les instances n'ont pas les mêmes attributs.

Python setattr() vs affectation

Il existe deux manières équivalentes de définir ou de mettre à jour la valeur d'un nouvel attribut pour un objet :

  • Utilisez le setattr(object, "attribute", value) fonction.
  • Utilisez l'opération d'affectation object.attribute = value .

La différence est que le setattr() nécessite une valeur de chaîne du nom d'attribut tandis que l'opération d'affectation nécessite le nom de l'attribut lui-même. Ainsi, si vous n'avez que la représentation textuelle de l'attribut à définir, par exemple, à partir d'un dictionnaire de paires clé-valeur, vous devez utiliser le setattr() fonction. Mais si vous avez le nom d'attribut explicite, il est souvent plus simple et lisible d'utiliser l'affectation.

class Person:
    None


# ASSIGNMENT:
# Create Alice with one attribute name
alice = Person()
alice.name = 'alice'

# SETATTR():
# Create Bob with one attribute name
bob = Person()
setattr(bob, 'name', 'bob')

print(alice.name)
print(bob.name)

'''
alice
bob
'''

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é

setattr(object, string, value) intégré de Python la fonction prend trois arguments :un objet , une chaîne , et une valeur arbitraire .

Il définit l'attribut donné par la chaîne sur l'objet à la valeur spécifiée. Après avoir appelé la fonction, il y a un attribut nouveau ou mis à jour à l'instance donnée, nommé et évalué comme indiqué dans les arguments.

Par exemple, setattr(object, 'attribute', 42) est équivalent à object.attribute = 42 :

class O:
    None
    
obj = O()
setattr(obj, 'attribute', 42)
print(obj.attribute)
# 42

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 !


Post précédent
Prochain article