Python >> Tutoriel Python >  >> Python

Méthode magique Python __set__

__set__() de Python la méthode magique définit un attribut donné sur une instance d'une classe contenant l'attribut (=propriétaire classe) à une nouvelle valeur. Lors de la définition de l'attribut via la classe propriétaire, Python exécute dynamiquement le __set__() de l'attribut méthode pour remplacer son value sur le instance donné dispute.

object.__set__(self, instance, value)

Par exemple, si vous créez une classe Person avec un attribut de type Name (et instances person et name ), réglage person.name = 42 conduirait à appeler le Name __set__() méthode pour obtenir le résultat.

💡 Terminologie :Le name attribut de type Name dans notre exemple s'appelle un descripteur .

Exemple minimal

Dans ce qui suit, vous pouvez voir un exemple minimal d'un descripteur name attribut définissant le __set__ méthode magique.

class Name:   
    def __set__(self, instance, value):
        self.value = value

class Person:
    name = Name()

   
alice = Person()

# The following calls __set__(alice.name, 'Alice Python'):
alice.name = 'Alice Python'   

print(alice.name.value)
# Alice Python

Passons ensuite au code :

  • Vous créez un Person classe avec un nom d'attribut de type Name .
  • Vous définissez le Name class comme descripteur en remplaçant le __set__ méthode magique.
  • Le __set__ la méthode prend le relais chaque fois que vous êtes sur le point d'attribuer une valeur à un attribut de type Name .
  • Python traduit l'expression alice.name = 'Alice Python' à __set__(alice.name, 'Alice Python') .
  • Dans cet appel de méthode magique, vous définissez le name.value attribut à la chaîne 'Alice Python' passé en argument. Ceci est la sortie de cet extrait de code.

Maintenant, vous avez une première intuition. Pour en savoir plus sur le fonctionnement des descripteurs, je vous recommande de consulter le tutoriel Python officiel détaillé qui est une excellente ressource sur le sujet ! 🙂