Python: Почему __getattr__ ловить AttributeErrors?

Я борюсь с __getattr__. У меня сложная рекурсивная кодовая база, где важно, чтобы исключения распространяются.

class A(object):
    @property
    def a(self):
        raise AttributeError('lala')

    def __getattr__(self, name):     
        print('attr: ', name)
        return 1      

print(A().a)

Результат:

('attr: ', 'a')
1

Почему такое поведение? Почему не генерируется исключение? Это поведение не задокументировано (__getattr__документация ). getattr() можно просто использовать A.__dict__. Есть мысли?

13
задан Dave Halter 20 June 2012 в 10:03
поделиться