Entendendo a diferença entre __getattr__ e __getattribute__

Estou tentando entender a diferença entre__getattr__ e__getattribute__no entanto, estou falhando nisso.

oresponda à pergunta Stack OverflowDiferença entre__getattr__ vs__getattribute__ diz:

__getattribute__ é invocado antes de examinar os atributos reais no objeto e, portanto, pode ser difícil de implementar corretamente. Você pode terminar em recursões infinitas com muita facilidade.

Não tenho absolutamente nenhuma idéia do que isso significa.

Então continua dizendo:

Você quase certamente quer__getattr__.

Por quê?

Eu li que se__getattribute__ falha,__getattr__ é chamado. Então, por que existem dois métodos diferentes fazendo a mesma coisa? Se meu código implementa as novas classes de estilo, o que devo usar?

Estou procurando alguns exemplos de código para esclarecer esta questão. Pesquisei no Google da melhor maneira possível, mas as respostas que encontrei não discutem o problema completamente.

Se houver alguma documentação, estou pronto para ler isso.

questionAnswers(3)

yourAnswerToTheQuestion