Qu'est-ce que __get__
peut réaliser qui ne peut pas être fait avec une méthode getter sur l'objet propriétaire?A quoi sert la méthode python __get__?
Je peux penser à une meilleure séparation des préoccupations mais je suppose qu'il y en a plus.
Qu'est-ce que __get__
peut réaliser qui ne peut pas être fait avec une méthode getter sur l'objet propriétaire?A quoi sert la méthode python __get__?
Je peux penser à une meilleure séparation des préoccupations mais je suppose qu'il y en a plus.
Il est utilisé pour les descripteurs. Ils sont un peu comme les getters/setters et les propriétés de Python, mais mieux. C'est ainsi que Python implémente le principe d'accès uniforme. Python Descriptors
Les méthodes Getter sont moche. Il est beaucoup plus clair à faire:
obj.foobar
que
obj.get_foobar()
En second lieu, il sert à mettre en œuvre staticmethod, classmethod et méthodes régulières. Tous ont des comportements légèrement différents et la méthode __get__
est utilisée pour les implémenter.
Mais vous pouvez user propriété (...) ou @property pour les getters jolie. Je vais jeter un coup d'oeil aux autres utilisations. Merci. – reshefm
@reshefm, la propriété est implémentée en utilisant __get__. C'est juste un raccourci pour faire la même chose. __get__ vous permet essentiellement de créer des objets qui agissent comme des propriétés, mais qui font quelque chose différemment. –
Vous l'avez maintenant après avoir lu le lien de Y.H Wong. Merci encore! – reshefm
"Mais mieux"? Les propriétés utilisent le protocole __get__, donc ce n'est pas "un peu comme", elles * sont *. ;) –
Non, je veux dire les propriétés au sens Java, c'est mieux à cause de UAP, donc plus de getProp(), setProp (blah) non-sens. –