__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 typeName
. - 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 typeName
. - 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 ! 🙂