Вторая цитата верна. Вторая цитата взята из справочника языка языка Python (хотя вы указали неверную ссылку), а ссылка на язык считается более авторитетной, чем руководство по использованию. Кроме того, он соответствует фактическому поведению; макрос PyDescr_IsData
, который вы нашли, является фактической программой , используемой в object.__getattribute__
, чтобы определить, что считается дескриптором данных, а - __set__
или __delete__
приведет к тому, что tp_descr_set
будет непустым.
Ссылка на язык также объясняет, почему Set
не отменяет экземпляр dict для a.b
:
Если он не определяет
__get__()
, то доступ к атрибуту будет возвращать сам объект дескриптора, если в словаре экземпляра объекта нет значения. [...] Дескрипторы данных с__set__()
и__get__()
, определенными, всегда переопределяют переопределение в словаре экземпляра.Определение либо
__set__
, либо__delete__
будет устанавливать типtp_descr_set
и создавать экземпляры дескрипторов данных типа. Дескриптор данных всегда будет вызываться для попыток установить или удалить атрибут, которым он управляет, даже если есть запись в типе экземпляра с тем же именем, и даже если он имеет только__set__
, и вы пытаетесь удалить атрибут или наоборот. (Если у него нет необходимого метода, он вызовет исключение.) Если в дескрипторе данных также есть__get__
, он также будет перехватывать попытки получить атрибут; в противном случае Python отпадет от обычного поведения поиска атрибутов, как если бы он вообще не был дескриптором.
Ваш сервер получит запрос и ответ. Из запроса вы можете получить URL, проанализировать его, а затем получить объект запроса.
server = function(req, res) {
// Get the URL and parse it
const parsedUrl = url.parse(req.url, true);
// Get the query string as an object
const queryStringObject = parsedUrl.query;
if (queryStringObject.id) {
// Do stuff
}
};