Please correct me if I'm wrong or let me know if i'm missing any further differences:
__get__: run code if arg is an attribute of instance
__getattr__: run code if arg is not an attribute of instance
__getattribute__: run code whether arg is an attribute of instance or not