Есть ли причина, по которой в Python есть и __getattr__, и __getattribute__ - PullRequest
0 голосов
/ 14 июня 2019

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

Что меня удивляет, так это то, что два аналогично названных метода, связанных с доступом к атрибутам, существуют даже для языка, который обычно пытается устранить путаницу. Я даже не могу вспомнить ситуацию, в которой мне нужно было бы определить __getattr__; Я могу просто определить __getattribute__, который использует object.__getattribute__ в операторе if или try. Более того, встроенная функция доступа к атрибутам называется getattr, что может ввести людей в заблуждение, что __getattr__ является методом перехода к атрибутам. Какова история этих двух методов, и есть ли веская причина, по которой они все еще существуют?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...