Comprendre la différence entre __getattr__ et __ _ _ getattribute__

Je suis en train d'essayer de comprendre la différence entre __getattr__ et __getattribute__, cependant, je suis en situation d'échec il.

La réponse pour le Dépassement de Pile question Différence entre __getattr__ et __getattribute__ dit:

__getattribute__ est invoquée avant de regarder les attributs réels sur
l'objet, et donc peut être difficile de
mettre en œuvre correctement. Vous pouvez vous retrouver dans
infini récurrences très facilement.

Je n'ai absolument aucune idée de ce que cela signifie.

Puis il va dire:

Vous voudrez certainement __getattr__.

Pourquoi?

J'ai lu que si __getattribute__ échoue, __getattr__ est appelé. Alors pourquoi il y a deux manières différentes de faire la même chose? Si mon code met en œuvre les nouvelles classes de style, que dois-je utiliser?

Je suis à la recherche pour des exemples de code pour claire à cette question. J'ai Googlé pour faire de mon mieux, mais les réponses que j'ai trouvé n'est pas de discuter du problème de fond.

Si il n'y a aucune documentation, je suis prêt à le lire.

  • si elle permet, à partir de la documentation "afin d'éviter une récursion infinie dans cette méthode, sa mise en œuvre devrait toujours faire appel à la méthode de classe de base avec le même nom pour accéder à tous les attributs dont il a besoin, par exemple, l'objet.__getattribute__(self, nom)." [docs.python.org/2/reference/...
InformationsquelleAutor user225312 | 2010-11-28