> A dedicated subclass of AttributeError to trigger __getattr__ is more natural.
I mean it's unnatural to convert AttributeError to AttributeDynamicError by property or descriptor. Why not use RuntimeError as that of PEP479?

And there's no need to write custom property-like descriptor factory when you want to trigger __getattr__, although it may be only a few lines of code.