Как отмечали другие, они используют функцию языка, называемую дескрипторами.
Причина, по которой объект фактического объекта возвращается при доступе к нему через класс Foo.hello
, заключается в том, как свойство реализует __get__(self, instance, owner)
специальный способ. Если дескриптор обращается к экземпляру , то этот экземпляр передается как соответствующий аргумент, а owner
является классом этого экземпляра.
С другой стороны, если к нему обращаются через класс, то instance
является None и пропускается только owner
. Объект property
распознает это и возвращает self
.
Кроме дескрипторов , как , см. Также документацию по Реализация дескрипторов и Вызов дескрипторов в Руководстве по языку.
Поскольку вы ожидаете один ответ, а не IEnumerable
, вам нужно использовать First
:
var parsedJson = JObject.Parse(webResponse.Response);
var datasetId = parsedJson["value"].First(n => n.SelectToken("name").ToString() == "Tissue Preps")
.SelectToken("id")
.ToString();