Я борюсь с __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__ documentation). getattr() может просто использовать A.__dict__. Любые мысли?