Водосбор полезные свойства


Водосбор обыкновенный полезные свойства и применение

Водосбор (ворсянка щетинистая)

Содержание:

Ботаническое описание

Химический состав

Полезные свойства

Применение при заболеваниях

Противопоказания

Рецепты

Где купить

 

Водосбор – это травянистое растение из рода Ворсянка, которое получило широкое применение в народной медицине.

Изначально ворсянка росла только в Северной Африке и Евразии, затем была завезена и успешно прижилась в Северной и Южной Америке, Австралии, Южной Африке. В России водосбор растет в Крыму, на Кавказе, в европейской части страны.

Ворсянка щетинистая используется в народной медицине в качестве потогонного, мочегонного, противовоспалительного и анальгетического средства.

Состав

Химический состав растения изучен недостаточно. Точно установлено, что в водосборе содержатся флавоноиды, кофейная кислота, иридоиды, гликозиды.

Полезные свойства

Целебные свойства растения обусловлены биологически активными веществами, входящими в ее состав. Иридоиды оказывают на организм потогонное, мочегонное, обезболивающее и противовоспалительное действие. Флавоноиды оказывают выраженное противовоспалительное и ранозаживляющее действие, укрепляют стенки сосудов и капилляров.

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

При каких заболеваниях используют водосбор

Основными показаниями к применению ворсянки щетинистой являются следующие патологические состояния организма:

  • мастит, мастопатия, опухоли груди у женщин;
  • мочекаменная болезнь и другие заболевания выделительной системы;
  • геморрой;
  • язвенная болезнь;
  • целлюлит;
  • кисты и полипы различной локализации.

Кроме этого, водосбор является одним из самых эффективных средств при лечении стафилококковой инфекции, так как он оказывает угнетающее действие на золотистый стафилококк.

Противопоказания

Беременным и кормящим женщинам, а также детям до 12 лет использовать водосбор рекомендуется только после консультации с лечащим врачом, так как свойства растения недостаточно изучены.

Способ применения

Ниже приведены основные рецепты использования водосбора в народной медицине:

Отвар №1. Берут одну столовую ложку измельченного водосбора, заливают 0,5 литрами кипятка, настаивают 10 минут на водяной бане, остужают, процеживают и принимают перед едой, по 100-150 миллилитров, три раза в сутки. Курс лечения составляет один месяц, после чего делают перерыв на 10 дней и повторяют курс. Всего необходимо провести три месячных курса.

Отвар №2. Берут две столовые ложки измельченной ворсянки, заливают 250 миллилитрами кипятка, ставят на огонь и кипятят еще в течение 5 минут. Готовый отвар принимают за час до приема пищи, трижды в день. Детям 6-8 лет дают 30 миллилитров на прием, детям 9-14 лет – 50 миллилитров, взрослым – 100 миллилитров на прием. Отвар принимают 3-4 дня, затем делают перерыв на тот же срок и вновь начинают пить отвар. Продолжительность курса лечения полгода.

Настой. Для его приготовления берут одну столовую ложку измельченной ворсянки, заливают 0,5 литрами кипятка, настаивают в течение получаса, процеживают. Днем настой пьют перед приемом пищи, три раза в день, по 100-150 миллилитров на прием. На ночь из настоя делают компресс, который прикладывают к больным местам. Курс лечения длится 20 дней, после чего делают перерыв на три дня и повторяют лечение. Всего таких курсов должно быть четыре.

Мазь. Для ее приготовления водосбор измельчают до порошкообразного состояния, заливают 10 граммами вазелина, растапливают получившуюся смесь на водяной бане, томят 15-20 минут, остужают. Готовую мазь используют наружно для лечения опухолевых образований, мастопатии, целлюлита. Схема применения: мазь тонким слоем наносят на пораженные участки тела и тщательно втирают в кожу. Оставляют на полчаса, затем смывают под проточной теплой водой или вытирают влажной салфеткой. Мазь необходимо втирать 1-2 раза в день.

Где купить

Приобрести водосбор Вы можете в нашем интернет-магазине. Сделать заказ легко. Вам нужно выбрать необходимый товар, добавить его в корзину, выбрать удобный способ доставки и оплаты. Доставка заказов осуществляется по почте или силами транспортной компании.

Покупайте ворсянку щетинистую и другие целебные растения прямо сейчас в интернет-магазине «Родные травы». Это просто, выгодно и надежно!

Какими полезными свойствами обладает хурма?

Хурма известна в народной медицине как мочегонное, слабительное и защищающее печень природное имунномодулирующее средство, но ее можно и нужно использовать при профилактике и лечении многих других заболеваний.

Продукт сохраняет впечатляющие запасы антиоксидантов, таких как бета-каротин, сибатол, аскорбиновая кислота и бетулиновая кислота. Они предотвращают преждевременное старение, рак и другие опасные заболевания, укрепляют иммунную систему.

В хурме содержится катехин, обладающий мощными антибактериальными, противовоспалительными и антигеморрагическими свойствами. И, конечно же, не забывайте о разных витаминах и минералах.

1. От простуды и гриппа защищает хурма за счет высокой концентрации витамина С. Она укрепляет борьбу организма с симптомами простуды и гриппа. В период повышенного риска респираторных заболеваний неплохо включить в рацион не только цветочный мед и малиновое варенье, но и хурму.

2. Запор. Натуральная клетчатка и большое количество воды в составе хурмы обеспечивают мягкое слабительное действие продукта.

3. мочегонное средство Плоды хурмы обязаны калию и кальцию. Ежедневное употребление более эффективных и безопасных диуретиков, поскольку это не приводит к потере калия в организме (частый побочный эффект диуретиков).

4. Понижает артериальное давление. При гипертонии часто ешьте хурму. Это не только поможет снизить давление, но и защитит от сердечных заболеваний, связанных с гипертонией.Вот отличный рецепт, проверенный временем. С плодов снимите кожуру и взбейте мякоть в блендере. Смешайте жидкость со стаканом молока. Пить 3 раза в неделю 3 раза в день.

5. Рекомендуется для очистки печени и детоксикации организма, в хурме содержатся антиоксиданты, которые обеспечивают львиную долю ее полезных свойств, в том числе нейтрализуют токсины и помогают в восстановлении клеток после атаки клеток свободными радикалами. .

6. Полезные источники энергии. В хурме много сахаров, которые быстро усваиваются организмом и превращаются в энергию.Именно поэтому он подходит малышам, которые находятся в спортивных кружках и секциях, ведь упражнение требует значительных энергетических затрат.

7. За счет природного антидепрессанта сахара и калия. Пейте сок хурмы, чтобы снять стресс, избавиться от усталости и нейтрализовать последствия стресса.

8. Похудение хурмы При правильном подходе практически каждый фрукт или овощ могут помочь в таком кропотливом деле, как похудание. Хурма - еще один диетический продукт в вашей копилке с надписью «Slim.Эти сочные ярко-оранжевые фрукты умеренно калорийны (70 калорий в одном кусочке), а высокий процент клетчатки улучшает пищеварение. Кроме того, они помогают организму усваивать больше полезных веществ даже из скудной и однообразной пищи, когда вы сидите на строгой диете.

9. Помогает усвоению питательных веществ в составе хурмы. Медь позволяет организму усваивать больше железа из пищи - необходимого для образования красных кровяных телец из минерала. Кроме того, продукт снижает потоотделение, тем самым защищая от потери полезных веществ, что особенно важно для спортсменов.

10. Защищает кожу от морщин и осветляет натуральные вяжущие компоненты, входящие в состав многих косметических средств, очищают и сужают поры. Домашние маски на основе хурмы подчеркивают овал лица, подтягивают кожу, разглаживают мелкие морщинки. Самый простой, но действенный рецепт - смесь мякоти спелых фруктов, яичного желтка и капельки лимонного сока.

11. При лечении гемофилии для приготовления народных лекарств вам понадобится 30 г сушеной хурмы и 30 г корня лотоса.Эти продукты измельчить, залить 2 стаканами воды и дать настояться 15 минут. Добавьте 10 мл меда, перемешайте и принимайте 15 дней, затем сделайте небольшой перерыв. Начните цикл снова до заметного улучшения.

12. От приступа икоты пойдет следующий рецепт: 5 стеблей хурмы, 5 маленьких кусочков свежего очищенного имбиря и 6 г ароматных бутонов гвоздики промыть и замочить в тазе с кипятком на 10 минут. Принимать напиток следует в теплом виде.

13. Лечение аллергии Это еще одна важная полезная особенность хурмы.Вымыть, очистить от кожуры и размять в миске 500 г незрелых плодов. Залить те же 1,5 л воды, перемешать и оставить на солнце на 7 дней. Отфильтровать жидкость и мякоть, отправить в помойку. Оставить воду на солнце еще на 3 дня, а затем перелить в удобную упаковку (можно в чистой баночке из-под крема). С помощью ватного тампона наносить средство на участки кожи, склонные к аллергии, до 4 раз в день.

с вашего собственного сайта.

.

Недвижимости - F # | Документы Microsoft

  • 7 минут на чтение

В этой статье

Свойства - это элементы, которые представляют значения, связанные с объектом.

Синтаксис

  // Свойство, для которого определены как получение, так и установка. [атрибуты] [статические] член [модификатор доступности] [собственный идентификатор.]Имя свойства с [модификатором доступности] get () = get-function-body и [модификатор доступности] установите параметр = набор-функция-тело // Альтернативный синтаксис для свойства, у которого есть получение и установка. [получить атрибуты] [статический] член [модификатор доступности для получения] [собственный идентификатор.] Имя свойства = get-function-body [атрибуты для набора] [статические] член [модификатор-доступности-для-набора] [собственный идентификатор.] Имя свойства с установленным параметром = набор-функция-тело // Свойство только для получения.[атрибуты] [статический] член [модификатор доступности] [собственный идентификатор.] PropertyName = get-function-body // Альтернативный синтаксис для свойства, имеющего только получение. [атрибуты] [статические] член [модификатор доступности] [собственный идентификатор.] Имя свойства с get () = get-function-body // Только установленное свойство. [атрибуты] [статические] член [модификатор доступности] [собственный идентификатор.] Имя свойства с установленным параметром = набор-функция-тело // Автоматически реализованные свойства. [атрибуты] [статические] член val [модификатор доступности] PropertyName = выражение-инициализации [с get, set]  

Замечания

Свойства представляют отношение «имеет» в объектно-ориентированном программировании, представляя данные, которые связаны с экземплярами объекта или, для статических свойств, с типом.

Вы можете объявить свойства двумя способами, в зависимости от того, хотите ли вы явно указать базовое значение (также называемое резервным хранилищем) для свойства, или если вы хотите разрешить компилятору автоматически создавать резервное хранилище для вас. Как правило, следует использовать более явный способ, если свойство имеет нетривиальную реализацию, и автоматический способ, когда свойство представляет собой простую оболочку для значения или переменной. Чтобы явно объявить свойство, используйте ключевое слово member .За этим декларативным синтаксисом следует синтаксис, определяющий методы get и set , также называемые методами доступа . Различные формы явного синтаксиса, показанные в разделе синтаксиса, используются для свойств чтения / записи, только для чтения и только для записи. Для свойств только для чтения вы определяете только метод get ; для свойств только для записи определите только метод set . Обратите внимание, что когда свойство имеет как get , так и set средств доступа, альтернативный синтаксис позволяет вам указать атрибуты и модификаторы доступа, которые различны для каждого средства доступа, как показано в следующем коде.

  // Свойство только для чтения. член this.MyReadOnlyProperty = myInternalValue // Свойство только для записи. член this.MyWriteOnlyProperty с набором (значение) = myInternalValue <- значение // Свойство чтения-записи. член this.MyReadWriteProperty с get () = myInternalValue и установите (значение) = myInternalValue <- значение  

Для свойств чтения / записи, которые имеют как get , так и set метод, порядок get и set можно поменять местами.В качестве альтернативы вы можете предоставить синтаксис, показанный только для , получить , а синтаксис, показанный для , установить только вместо использования комбинированного синтаксиса. Это упрощает комментирование отдельного метода get или set , если это то, что вам может понадобиться. Эта альтернатива использованию комбинированного синтаксиса показана в следующем коде.

  член this.MyReadWriteProperty с get () = myInternalValue член this.MyReadWriteProperty с набором (значение) = myInternalValue <- значение  

Частные значения, содержащие данные о свойствах, называются резервными хранилищами .Чтобы компилятор автоматически создавал резервное хранилище, используйте ключевые слова member val , опустите собственный идентификатор, а затем предоставьте выражение для инициализации свойства. Если свойство должно быть изменяемым, включите с get, установите . Например, следующий тип класса включает два автоматически реализуемых свойства. Свойство 1 доступно только для чтения и инициализируется аргументом, предоставленным первичному конструктору, а Свойство 2 - настраиваемое свойство, инициализированное пустой строкой:

  тип MyClass (свойство1: int) = член val Property1 = property1 член val Property2 = "" с get, set  

Автоматически реализуемые свойства являются частью инициализации типа, поэтому они должны быть включены до любых других определений членов, точно так же, как позволяет привязкам и делать привязки в определении типа.Обратите внимание, что выражение, которое инициализирует автоматически реализуемое свойство, оценивается только при инициализации, а не при каждом доступе к свойству. Это поведение отличается от поведения явно реализованного свойства. Фактически это означает, что код для инициализации этих свойств добавляется в конструктор класса. Рассмотрим следующий код, который показывает эту разницу:

  тип MyClass () = let random = new System.Random () член val AutoProperty = random.Next () с помощью get, установить член this.ExplicitProperty = random.Next () пусть class1 = новый MyClass () printfn "class1.AutoProperty =% d" class1.AutoProperty printfn "class1.AutoProperty =% d" class1.AutoProperty printfn "class1.ExplicitProperty =% d" class1.ExplicitProperty printfn "class1.ExplicitProperty =% d" class1.ExplicitProperty  

Выход

  класс1.AutoProperty = 1853799794 class1.AutoProperty = 1853799794 class1.ExplicitProperty = 978922705 класс1.ExplicitProperty = 1131210765  

Выходные данные предыдущего кода показывают, что значение AutoProperty не изменяется при повторном вызове, тогда как ExplicitProperty изменяется каждый раз при его вызове. Это демонстрирует, что выражение для автоматически реализуемого свойства не вычисляется каждый раз, как метод получения для явного свойства.

Предупреждение

Есть несколько библиотек, например Entity Framework ( System.Data.Entity ), которые выполняют настраиваемые операции в конструкторах базовых классов, которые не работают с инициализацией автоматически реализуемых свойств.В таких случаях попробуйте использовать явные свойства.

Свойства могут быть членами классов, структур, размеченных объединений, записей, интерфейсов и расширений типов, а также могут быть определены в выражениях объектов.

К свойствам можно применять атрибуты. Чтобы применить атрибут к свойству, напишите атрибут в отдельной строке перед свойством. Для получения дополнительной информации см. Атрибуты.

По умолчанию свойства являются общедоступными. Модификаторы доступности также могут применяться к свойствам.Чтобы применить модификатор доступности, добавьте его непосредственно перед именем свойства, если он предназначен для применения к методам get и set ; добавьте его перед , чтобы получить и , чтобы установить ключевых слов, если для каждого средства доступа требуется разная доступность. Модификатор доступности может быть одним из следующих: общедоступный , частный , внутренний . Для получения дополнительной информации см. Контроль доступа.

Реализации свойств выполняются каждый раз при обращении к свойству.

Статические свойства и свойства экземпляра

Свойства могут быть статическими или экземплярами. Статические свойства могут быть вызваны без экземпляра и используются для значений, связанных с типом, а не с отдельными объектами. Для статических свойств не указывайте собственный идентификатор. Для свойств экземпляра требуется собственный идентификатор.

Следующее определение статического свойства основано на сценарии, в котором у вас есть статическое поле myStaticValue , которое является резервным хранилищем для свойства.

  статический член MyStaticProperty с get () = myStaticValue и установите (значение) = myStaticValue <- значение  

Свойства также могут быть подобны массивам, и в этом случае они называются индексированными свойствами . Для получения дополнительной информации см. Индексированные свойства.

Описание типа для свойств

Во многих случаях компилятор имеет достаточно информации, чтобы сделать вывод о типе свойства из типа резервного хранилища, но вы можете установить тип явно, добавив аннотацию типа.

  // Чтобы применить аннотацию типа к свойству, которое не имеет явного // получить или установить, применить аннотацию типа непосредственно к свойству. член this.MyProperty1: int = myInternalValue // Если есть get или set, применить аннотацию типа к методу get или set. член this.MyProperty2 с get (): int = myInternalValue  

Использование аксессуаров набора свойств

Вы можете установить свойства, которые предоставляют , установить аксессоров с помощью оператора <- .

  // Предположим, что аргумент конструктора устанавливает начальное значение // внутреннее резервное хранилище. пусть изменяемый myObject = новый MyType (10) myObject.MyProperty <- 20 printfn "% d" (myObject.MyProperty)  

Выводится 20 .

Абстрактные свойства

Свойства могут быть абстрактными. Как и в случае с методами, abstract просто означает, что есть виртуальная отправка, связанная со свойством. Абстрактные свойства могут быть действительно абстрактными, то есть без определения в том же классе.Следовательно, класс, содержащий такое свойство, является абстрактным классом. В качестве альтернативы абстрактное может просто означать, что свойство виртуальное, и в этом случае определение должно присутствовать в том же классе. Обратите внимание, что абстрактные свойства не должны быть частными, и если один метод доступа является абстрактным, другой также должен быть абстрактным. Дополнительные сведения об абстрактных классах см. В разделе «Абстрактные классы».

  // Абстрактное свойство в абстрактном классе. // Свойство представляет собой тип int, у которого есть get и // установить метод [] тип AbstractBase () = абстрактное свойство1: int с get, set // Реализация абстрактного свойства тип Derived1 () = наследовать AbstractBase () пусть изменяемое значение = 10 переопределить это.Свойство 1 с get () = value и set (v: int) = value <- v // Тип с «виртуальным» свойством. введите Base1 () = пусть изменяемое значение = 10 абстрактное свойство1: int с get, set по умолчанию this.Property1 с get () = value и set (v: int) = value <- v // Производный тип, который переопределяет виртуальное свойство тип Derived2 () = наследовать Base1 () пусть изменяемое значение2 = 11 переопределите this.Property1 с помощью get () = value2 и set (v) = value2 <- v  

См. Также

.

Идентификаторы свойств элемента автоматизации (UIAutomationClient.h) - приложения Win32

UIA_AcceleratorKeyPropertyId
30006
Определяет свойство AcceleratorKey , которое представляет собой строку, содержащую комбинации клавиш-ускорителей (также называемых сочетаниями клавиш) для элемента автоматизации.
Комбинации клавиш быстрого доступа вызывают действие. Например, CTRL + O часто используется для вызова стандартного диалогового окна «Открыть файл».Элемент автоматизации, имеющий свойство AcceleratorKey , может реализовать шаблон управления Invoke для действия, эквивалентного команде быстрого доступа.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_AccessKeyPropertyId
30007
Обозначает свойство AccessKey , которое представляет собой строку, содержащую символ ключа доступа для элемента автоматизации.
Клавиша доступа (иногда называемая мнемоникой) - это символ в тексте меню, пункта меню или метки элемента управления, например кнопки, который активирует связанную функцию меню. Например, чтобы открыть меню «Файл», для которого обычно используется клавиша доступа F, пользователь должен нажать ALT + F.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_AnnotationObjectsPropertyId
30156
Определяет свойство AnnotationObjects. , которое представляет собой список объектов аннотации в документе, таких как комментарий, верхний колонтитул, нижний колонтитул и т. Д.
Тип варианта: VT_I4 | VT_ARRAY
Значение по умолчанию: пустой массив
UIA_AnnotationTypesPropertyId
30155
Обозначает свойство AnnotationTypes , которое представляет собой список типов примечаний в документе, таких как комментарий, заголовок, нижний колонтитул и т. Д.
Тип варианта: VT_I4 | VT_ARRAY
Значение по умолчанию: пустой массив
UIA_AriaPropertiesPropertyId
30102
Определяет свойство AriaProperties , которое представляет собой отформатированную строку, содержащую информацию о свойстве доступного полнофункционального Интернет-приложения (ARIA) для элемента автоматизации.Дополнительные сведения о сопоставлении состояний и свойств ARIA со свойствами и функциями модели автоматизации пользовательского интерфейса см. В разделе «Автоматизация пользовательского интерфейса для расширенных доступных интернет-приложений W3C».
AriaProperties - это набор пар имя / значение с разделителями = (равно) и ; (точка с запятой), например, «проверено = истина; отключено = ложь». \ (обратная косая черта) используется в качестве escape-символа, когда в значениях появляются эти символы-разделители или \ .По соображениям безопасности и по другим причинам реализация этого свойства поставщиком может предпринять шаги для проверки исходных свойств ARIA; однако это не обязательно.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_AriaRolePropertyId
30101
Определяет свойство AriaRole , которое представляет собой строку, содержащую информацию о роли доступного полнофункционального Интернет-приложения (ARIA) для элемента автоматизации.Дополнительные сведения о сопоставлении ролей ARIA с типами элементов управления Автоматизация пользовательского интерфейса см. В разделе Автоматизация пользовательского интерфейса для доступных полнофункциональных интернет-приложений W3C.
[! Примечание]
В качестве опции пользовательский агент может также предложить локализованное описание роли W3C ARIA в свойстве LocalizedControlType . Если локализованная строка не указана, система предоставит для элемента строку LocalizedControlType по умолчанию.

Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка

UIA_AutomationIdPropertyId
30011
Определяет свойство AutomationId , которое представляет собой строку, содержащую идентификатор (ID) автоматизации пользовательского интерфейса для элемента автоматизации.
Если он доступен, AutomationId элемента должен быть одинаковым в любом экземпляре приложения, независимо от местного языка. Значение должно быть уникальным среди элементов-братьев, но не обязательно для всего рабочего стола. Например, несколько экземпляров приложения или несколько представлений папок в проводнике Microsoft Windows могут содержать элементы с одним и тем же свойством AutomationId , например «SystemMenuBar».
Хотя для лучшей поддержки автоматизированного тестирования всегда рекомендуется поддерживать AutomationId , это свойство не является обязательным.Если он поддерживается, AutomationId полезен для создания сценария автоматизации тестирования, который запускается независимо от языка пользовательского интерфейса. Клиенты не должны делать никаких предположений относительно значений AutomationId , предоставляемых другими приложениями. AutomationId не гарантирует стабильность в разных выпусках или сборках приложения.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_BoundingRectanglePropertyId
30001
Определяет свойство BoundingRectangle , которое задает координаты прямоугольника, полностью охватывающего элемент автоматизации.Прямоугольник выражается в физических координатах экрана. Он может содержать точки, на которые нельзя щелкнуть, если форма или интерактивная область элемента пользовательского интерфейса нерегулярны или если элемент скрыт другими элементами пользовательского интерфейса.
Тип варианта: VT_R8 | VT_ARRAY
Значение по умолчанию: [0,0,0,0]
[! Примечание]
Это свойство NULL , если элемент в настоящее время не отображает пользовательский интерфейс.
UIA_CenterPointPropertyId
30165
Определяет свойство CenterPoint , которое задает координаты центральной точки X и Y элемента автоматизации.Координатное пространство - это то, что провайдер логически считает страницей.
Тип варианта: VT_R8 | VT_ARRAY
Значение по умолчанию: VT_EMPTY
UIA_ClassNamePropertyId
30012
Определяет свойство ClassName , которое представляет собой строку, содержащую имя класса для элемента автоматизации, назначенное разработчиком элемента управления.
Имя класса зависит от реализации поставщика автоматизации пользовательского интерфейса и поэтому не всегда имеет стандартный формат.Однако, если имя класса известно, его можно использовать для проверки того, что приложение работает с ожидаемым элементом автоматизации.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_ClickablePointPropertyId
30014
Обозначает свойство ClickablePoint , которое представляет собой точку на элементе автоматизации, по которой можно щелкнуть. По элементу нельзя щелкнуть, если он полностью или частично закрыт другим окном.
Тип варианта: VT_R8 | VT_ARRAY
Значение по умолчанию: VT_EMPTY
UIA_ControllerForPropertyId
30104
Определяет свойство ControllerFor , которое представляет собой массив элементов автоматизации, которыми управляет элемент автоматизации, поддерживающий это свойство. Контроллер
Для используется, когда элемент автоматизации влияет на один или несколько сегментов пользовательского интерфейса приложения или рабочего стола; в противном случае трудно связать влияние операции управления с элементами пользовательского интерфейса.
Этот идентификатор обычно используется для специальных возможностей автоматического предложения.
Тип варианта для провайдеров: VT_UNKNOWN | VT_ARRAY
Тип варианта для клиентов: VT_UNKNOWN ( IUIAutomationElementArray )
Значение по умолчанию: пустой массив
UIA_ControlTypePropertyId
30003
Определяет свойство ControlType , которое является классом, определяющим тип элемента автоматизации. ControlType определяет характеристики элементов пользовательского интерфейса с помощью хорошо известных примитивов управления пользовательского интерфейса, таких как кнопка или флажок.
Тип варианта: VT_I4
Значение по умолчанию: UIA_CustomControlTypeId
[! Примечание]
Используйте значение по умолчанию, только если элемент автоматизации представляет собой полностью новый тип управления.
UIA_CulturePropertyId
30015
Определяет свойство Культура , которое содержит идентификатор локали для элемента автоматизации (например, 0x0409 для «en-US» или английского языка (США)).
Каждая локаль имеет уникальный идентификатор, 32-битное значение, состоящее из идентификатора языка и идентификатора порядка сортировки. Идентификатор языкового стандарта представляет собой стандартное международное числовое сокращение и содержит компоненты, необходимые для однозначной идентификации одного из установленных языковых стандартов, определенных операционной системой. Для получения дополнительной информации см. Константы и строки идентификатора языка.
Это свойство может существовать для каждого элемента управления, но обычно доступно только на уровне приложения.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_DescribedByPropertyId
30105
Определяет свойство DescribedBy , которое представляет собой массив элементов, предоставляющих дополнительную информацию об элементе автоматизации.
DescribedBy используется, когда элемент автоматизации объясняется другим сегментом пользовательского интерфейса приложения. Например, свойство может указывать на текстовый элемент «2529 элементов в 85 группах, 10 элементов выбрано» из сложного настраиваемого объекта списка. Вместо использования объектной модели для переваривания аналогичной информации клиентами свойство DescribedBy может предложить быстрый доступ к элементу пользовательского интерфейса, который уже может предлагать полезную информацию для конечного пользователя, описывающую элемент пользовательского интерфейса.
Тип варианта для провайдеров: VT_UNKNOWN | VT_ARRAY
Тип варианта для клиентов: VT_UNKNOWN ( IUIAutomationElementArray )
Значение по умолчанию: пустой массив
UIA_FillColorPropertyId
30160
Определяет свойство FillColor , которое определяет цвет, используемый для заливки элемента автоматизации.Этот атрибут указывается как COLORREF, 32-битное значение, используемое для определения цвета RGB или RGBA.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_FillTypePropertyId
30162
Определяет свойство FillType. , которое определяет шаблон, используемый для заливки элемента автоматизации, например «нет», цвет, градиент, изображение, узор и т. Д.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_FlowsFromPropertyId
30148
Идентифицирует свойство FlowsFrom , которое представляет собой массив элементов автоматизации, предлагающий порядок чтения перед текущим элементом автоматизации.Поддерживается, начиная с Windows 8.
Свойство FlowsFrom определяет порядок чтения, когда элементы автоматизации не отображаются или не структурированы в том же порядке чтения, который воспринимается пользователем. Хотя свойство FlowsFrom может указывать несколько предшествующих элементов, оно обычно содержит только предыдущий элемент в порядке чтения.
Тип варианта для провайдеров: VT_UNKNOWN | VT_ARRAY
Тип варианта для клиентов: VT_UNKNOWN ( IUIAutomationElementArray )
Значение по умолчанию: пустой массив
UIA_FlowsToPropertyId
30106
Определяет свойство FlowsTo , которое представляет собой массив элементов автоматизации, который предлагает порядок чтения после текущего элемента автоматизации.
Свойство FlowsTo определяет порядок чтения, когда элементы автоматизации не отображаются или не структурированы в том же порядке чтения, который воспринимается пользователем. Хотя свойство FlowsTo может указывать несколько следующих друг за другом элементов, обычно оно содержит только следующий элемент в порядке чтения.
Тип варианта для провайдеров: VT_UNKNOWN | VT_ARRAY
Тип варианта для клиентов: VT_UNKNOWN ( IUIAutomationElementArray )
Значение по умолчанию: пустой массив
UIA_FrameworkIdPropertyId
30024
Обозначает свойство FrameworkId , которое представляет собой строку, содержащую имя базовой инфраструктуры пользовательского интерфейса, которой принадлежит элемент автоматизации.
FrameworkId позволяет клиентским приложениям обрабатывать элементы автоматизации по-разному в зависимости от конкретной инфраструктуры пользовательского интерфейса. Примеры значений свойств включают «Win32», «WinForm» и «DirectUI».
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_FullDescriptionPropertyId
30159
Свойство FullDescription предоставляет локализованную строку, которая может содержать расширенный текст описания для элемента. FullDescription может содержать более полное описание элемента, чем может подходить для элемента Name .
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_HasKeyboardFocusPropertyId
30008
Определяет свойство HasKeyboardFocus , которое является логическим значением, указывающим, имеет ли элемент автоматизации фокус клавиатуры.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_HeadingLevelPropertyId
30173
Определяет свойство HeadingLevel , которое указывает уровень заголовка элемента автоматизации пользовательского интерфейса.
Тип варианта: VT_I4
Значение по умолчанию: HeadingLevel_None
UIA_HelpTextPropertyId
30013
Определяет свойство HelpText , которое представляет собой текстовую строку справки, связанную с элементом автоматизации.
Свойство HelpText может поддерживаться с текстом-заполнителем, появляющимся в элементах управления редактированием или списком. Например, «Введите здесь текст для поиска» - хороший кандидат на свойство HelpText для элемента управления редактированием, который помещает текст перед фактическим вводом пользователя. Однако этого недостаточно для свойства name элемента управления редактированием.
Если поддерживается HelpText , строка должна соответствовать языку пользовательского интерфейса приложения или языку пользовательского интерфейса операционной системы по умолчанию.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_IsContentElementPropertyId
30017
Определяет свойство IsContentElement , которое является логическим значением, которое указывает, отображается ли элемент в представлении содержимого дерева элементов автоматизации. Дополнительные сведения см. В разделе Обзор дерева автоматизации пользовательского интерфейса.
[! Примечание]
Чтобы элемент отображался в представлении содержимого, свойство IsContentElement и свойство IsControlElement должны иметь значение TRUE .

Тип варианта: VT_BOOL
Значение по умолчанию: ИСТИНА

UIA_IsControlElementPropertyId
30016
Идентифицирует свойство IsControlElement , которое является логическим значением, определяющим, отображается ли элемент в представлении управления дерева элементов автоматизации. Дополнительные сведения см. В разделе Обзор дерева автоматизации пользовательского интерфейса.
Тип варианта: VT_BOOL
Значение по умолчанию: ИСТИНА
UIA_IsDataValidForFormPropertyId
30103
Определяет свойство IsDataValidForForm , которое является логическим значением, указывающим, является ли введенное или выбранное значение допустимым для правила формы, связанного с элементом автоматизации.Например, если пользователь ввел «425-555-5555» для поля почтового индекса, которое требует 5 или 9 цифр, для свойства IsDataValidForForm может быть установлено значение FALSE , чтобы указать, что данные недействительны.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsDialogPropertyId
30174
Определяет свойство IsDialog , которое является логическим значением, указывающим, является ли элемент автоматизации диалоговым окном.Например, вспомогательные технологии, такие как программы чтения с экрана, обычно озвучивают заголовок диалогового окна, выделенный элемент управления в диалоговом окне, а затем содержимое диалогового окна вплоть до выделенного элемента управления («Вы хотите сохранить изменения перед закрытием»). Для стандартных окон программа чтения с экрана обычно произносит заголовок окна, за которым следует элемент управления в фокусе. Для свойства IsDialog можно установить значение TRUE , чтобы указать, что клиентское приложение должно обрабатывать элемент как диалоговое окно.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsEnabledPropertyId
30010
Определяет свойство IsEnabled , которое является логическим значением, указывающим, включен ли элемент пользовательского интерфейса, на который ссылается элемент автоматизации, и с ним можно взаимодействовать.
Когда активировано состояние элемента управления FALSE , предполагается, что дочерние элементы управления также не включены.Клиенты не должны ожидать от дочерних элементов событий, связанных с изменением свойств, при изменении состояния родительского элемента управления.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsKeyboardFocusablePropertyId
30009
Определяет свойство IsKeyboardFocusable , которое представляет собой логическое значение, указывающее, может ли элемент автоматизации принимать фокус клавиатуры.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsOffscreenPropertyId
30022
Идентифицирует свойство IsOffscreen , которое является логическим значением, которое указывает, полностью ли элемент автоматизации прокручен из поля зрения (например, элемент в списке, который находится за пределами области просмотра объекта-контейнера) или свернут из поля зрения (например, элемент в виде дерева или меню, или в свернутом окне).Если у элемента есть точка, на которую можно щелкнуть, которая может привести к тому, что он получит фокус, элемент считается отображаемым на экране, в то время как часть элемента находится за пределами экрана.
На значение свойства не влияет окклюзия со стороны других окон или видимость элемента на определенном мониторе.
Если свойство IsOffscreen равно ИСТИНА , элемент пользовательского интерфейса прокручивается за пределы экрана или сворачивается. Элемент временно скрыт, но остается в восприятии конечного пользователя и продолжает включаться в модель пользовательского интерфейса.Объект можно снова отобразить, прокручивая, щелкая раскрывающийся список и т. Д.
Объекты, которые конечный пользователь вообще не воспринимает или которые «программно скрыты» (например, диалоговое окно, которое было закрыто, но базовый объект все еще кэшируется приложением), не должны находиться в элементе автоматизации. дерево в первую очередь (вместо установки состояния IsOffscreen на TRUE ).
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsPasswordPropertyId
30019
Определяет свойство IsPassword , которое является логическим значением, указывающим, содержит ли элемент автоматизации защищенное содержимое или пароль.
Когда свойство IsPassword имеет значение TRUE и элемент имеет фокус клавиатуры, клиентское приложение должно отключить эхо клавиатуры или обратную связь ввода с клавиатуры, которая может раскрыть защищенную информацию пользователя. Попытка получить доступ к свойству Value защищенного элемента (элемент управления редактированием) может вызвать ошибку.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsPeripheralPropertyId
30150
Определяет свойство IsPeripheral , которое является логическим значением, указывающим, представляет ли элемент автоматизации периферийный пользовательский интерфейс.Периферийный пользовательский интерфейс появляется и поддерживает взаимодействие с пользователем, но не принимает фокус клавиатуры, когда появляется. Примеры периферийного пользовательского интерфейса включают всплывающие окна, всплывающие меню, контекстные меню или плавающие уведомления. Поддерживается начиная с Windows 8.1.
Когда свойство IsPeripheral имеет значение TRUE , клиентское приложение не может предположить, что фокус был взят элементом, даже если он в настоящее время взаимодействует с клавиатурой.
Это свойство актуально для следующих типов элементов управления:
  • UIA_GroupControlTypeId
  • UIA_MenuControlTypeId
  • UIA_PaneControlTypeId
  • UIA_ToolBarControlTypeId
  • UIA_ToolTipControlTypeId
  • UIA_WindowControlTypeId
  • UIA_CustomControlTypeId
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_IsRequiredForFormPropertyId
30025
Определяет свойство IsRequiredForForm , которое является логическим значением, которое указывает, требуется ли заполнять элемент автоматизации в форме.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_ItemStatusPropertyId
30026
Обозначает свойство ItemStatus , которое представляет собой текстовую строку, описывающую состояние элемента элемента автоматизации.
ItemStatus позволяет клиенту определить, передает ли элемент статус об элементе, а также каков статус. Например, элемент, связанный с контактом в приложении для обмена сообщениями, может быть «Занят» или «Подключен».
Если поддерживается ItemStatus , строка должна соответствовать языку пользовательского интерфейса приложения или языку пользовательского интерфейса операционной системы по умолчанию.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_ItemTypePropertyId
300021
Определяет свойство ItemType , которое представляет собой текстовую строку, описывающую тип элемента автоматизации.
ItemType используется для получения информации об элементах в списке, древовидном представлении или сетке данных.Например, элемент в представлении каталога файлов может быть «файлом документа» или «папкой».
Если поддерживается ItemType , строка должна соответствовать языку пользовательского интерфейса приложения или языку пользовательского интерфейса операционной системы по умолчанию.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_LabeledByPropertyId
30018
Обозначает свойство LabeledBy , которое является элементом автоматизации, содержащим текстовую метку для этого элемента.
Это свойство можно использовать для получения, например, статической текстовой метки для поля со списком.
Тип варианта: VT_UNKNOWN
Значение по умолчанию: NULL
UIA_LandmarkTypePropertyId
30157
Идентифицирует свойство LandmarkType , которое представляет собой идентификатор типа Landmark , связанный с элементом.
Свойство LandmarkType описывает элемент, который представляет группу элементов.Например, ориентир поиска может представлять набор связанных элементов управления для поиска.
Если используется UIA_CustomLandmarkTypeId , то для описания пользовательского ориентира требуется UIA_LocalizedLandmarkTypePropertyId .
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_LevelPropertyId
30154
Определяет свойство Уровень , которое представляет собой целое число с отсчетом от 1, связанное с элементом автоматизации.
Свойство Уровень описывает расположение элемента внутри иерархической или разорванной иерархической структуры. Например, маркированный / нумерованный список, заголовки или другие элементы структурированных данных могут иметь различные родительские / дочерние отношения. Уровень описывает, где в структуре находится предмет.
Рекомендуется использовать шаблон пользовательского управления навигацией в тандеме с , уровень .
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_LiveSettingPropertyId
30135
Определяет свойство LiveSetting , которое поддерживается элементом автоматизации, представляющим активную область.Свойство LiveSetting указывает уровень «вежливости», который клиент должен использовать для уведомления пользователя об изменениях в активной области. Это свойство может быть одним из значений из перечисления LiveSetting . Поддерживается начиная с Windows 8.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_LocalizedControlTypePropertyId
30004
Определяет свойство LocalizedControlType , которое представляет собой текстовую строку, описывающую тип элемента управления, который представляет элемент автоматизации.Строка должна содержать только строчные буквы:
  • Правильно: "кнопка"
  • Неправильно: «Кнопка»

Когда LocalizedControlType не указан поставщиком элемента, платформа предоставляет локализованную строку по умолчанию в соответствии с типом элемента управления (например, «кнопка» для типа элемента управления Button). Элемент автоматизации с типом элемента управления Custom должен поддерживать строку локализованного типа элемента управления, которая представляет роль элемента (например, «выбор цвета» для пользовательского элемента управления, который позволяет пользователям выбирать и указывать цвета).
Если указано пользовательское значение, строка должна соответствовать языку пользовательского интерфейса приложения или языку пользовательского интерфейса операционной системы по умолчанию.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_LocalizedLandmarkTypePropertyId
30158
Обозначает LocalizedLandmarkType , который представляет собой текстовую строку, описывающую тип ориентира, который представляет элемент автоматизации.
Его следует использовать вместе с UIA_CustomLandmarkTypeId , однако LocalizedLandmarkType всегда должен иметь приоритет над LandmarkType и использоваться для описания ориентира до LandmarkType .
Строка должна соответствовать языку пользовательского интерфейса приложения или языку пользовательского интерфейса операционной системы по умолчанию.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_NamePropertyId
30005
Определяет свойство Name , которое представляет собой строку, содержащую имя элемента автоматизации.
Имя Свойство должно совпадать с текстом метки на экране. Например, Имя должно быть «Обзор» для элемента кнопки с меткой «Обзор». Свойство Name не должно включать мнемонический символ для клавиш доступа (то есть «&»), который подчеркнут в текстовом представлении пользовательского интерфейса. Кроме того, свойство Name не должно быть расширенной или модифицированной версией экранной метки, поскольку несоответствие между именем и меткой может вызвать путаницу среди клиентских приложений и пользователей.
Когда соответствующий текст метки не отображается на экране или когда он заменяется графикой, следует выбрать альтернативный текст. Альтернативный текст должен быть кратким, интуитивно понятным и локализованным для языка пользовательского интерфейса приложения или языка пользовательского интерфейса по умолчанию операционной системы. Альтернативный текст должен быть не подробным описанием визуальных деталей, а кратким описанием функции или возможности пользовательского интерфейса, как если бы они были помечены простым текстом. Например, кнопка меню «Пуск» в Windows называется «Пуск» (кнопка) вместо «Логотип Windows на синей круглой сфере» (кнопка).Для получения дополнительной информации см. Создание текстовых эквивалентов для изображений.
Когда метка пользовательского интерфейса использует текстовую графику (например, используя ">>" для кнопки, которая добавляет элемент слева направо), свойство Name должно быть переопределено соответствующей текстовой альтернативой (например, "Добавить" ). Однако практика использования текстовой графики в качестве метки пользовательского интерфейса не рекомендуется из-за проблем как локализации, так и доступности.
Свойство Name не должно включать информацию о роли или типе элемента управления, такую ​​как «кнопка» или «список»; в противном случае он будет конфликтовать с текстом из свойства LocalizedControlType , когда эти два свойства добавляются (многие существующие вспомогательные технологии делают это).
Имя Имя не может использоваться в качестве уникального идентификатора среди братьев и сестер. Однако до тех пор, пока это согласуется с представлением пользовательского интерфейса, одно и то же значение Name может поддерживаться между одноранговыми узлами. Для автоматизации тестирования клиентам следует рассмотреть возможность использования свойства AutomationId или RuntimeId .
Текстовые элементы управления не всегда должны иметь свойство Имя , идентичное тексту, отображаемому в элементе управления, если также поддерживается шаблон Текст .
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_NativeWindowHandlePropertyId
30020
Определяет свойство NativeWindowHandle , которое является целым числом, представляющим дескриптор ( HWND ) окна элемента автоматизации, если он существует; в противном случае это свойство равно 0.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_OptimizeForVisualContentPropertyId
30111
Определяет свойство OptimizeForVisualContent , которое является логическим значением, которое указывает, предоставляет ли поставщик только видимые элементы.Провайдер может использовать это свойство для оптимизации производительности при работе с очень большими частями контента. Например, когда пользователь просматривает большой кусок контента, провайдер может уничтожить элементы контента, которые больше не видны. Когда элемент содержимого уничтожается, поставщик должен вернуть код ошибки UIA_E_ELEMENTNOTAVAILABLE . Поддерживается начиная с Windows 8.
Тип варианта: VT_BOOL
Значение по умолчанию: FALSE
UIA_OrientationPropertyId
300023
Определяет свойство Orientation , которое указывает ориентацию элемента управления, представленного элементом автоматизации.Свойство выражается как значение из перечислимого типа OrientationType .
Свойство Ориентация поддерживается элементами управления, такими как полосы прокрутки и ползунки, которые могут иметь вертикальную или горизонтальную ориентацию. В противном случае это всегда может быть OrientationType_None , что означает, что элемент управления не имеет ориентации.
Тип варианта: VT_I4
Значение по умолчанию: 0 ( OrientationType_None )
UIA_OutlineColorPropertyId
30161
Определяет свойство OutlineColor , которое определяет цвет, используемый для контура элемента автоматизации.Этот атрибут указывается как COLORREF , 32-битное значение, используемое для определения цвета RGB или RGBA.
Тип варианта: VT_I4 | VT_ARRAY
Значение по умолчанию: 0
UIA_OutlineThicknessPropertyId
30164
Определяет свойство OutlineThickness , которое определяет ширину контура элемента автоматизации.
Тип варианта: VT_R8 | VT_ARRAY
Значение по умолчанию: VT_EMPTY
UIA_PositionInSetPropertyId
30152
Определяет свойство PositionInSet , которое представляет собой целое число с отсчетом от 1, связанное с элементом автоматизации. PositionInSet описывает порядковое расположение элемента в наборе элементов, которые считаются родственными.
PositionInSet работает в координации со свойством SizeOfSet для описания порядкового расположения в наборе.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_ProcessIdPropertyId
30002
Идентифицирует ProcessId свойство, которое является целым числом, представляющим идентификатор процесса (ID) элемента автоматизации.
Идентификатор процесса (ID) назначается операционной системой. Его можно увидеть в столбце PID на вкладке Processes в диспетчере задач.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_ProviderDescriptionPropertyId
30107
Определяет свойство ProviderDescription , которое представляет собой отформатированную строку, содержащую исходную информацию поставщика автоматизации пользовательского интерфейса для элемента автоматизации, включая информацию о прокси.
Тип варианта: VT_BSTR
Значение по умолчанию: пустая строка
UIA_RotationPropertyId
30166
Определяет свойство Rotation , которое указывает угол поворота в неопределенных единицах.
Тип варианта: VT_R8
Значение по умолчанию: 0
UIA_RuntimeIdPropertyId
30000
Определяет свойство RuntimeId , которое представляет собой массив целых чисел, представляющих идентификатор элемента автоматизации.
Идентификатор уникален на рабочем столе, но гарантированно будет уникальным только в пределах пользовательского интерфейса рабочего стола, на котором он был создан. Идентификаторы можно использовать повторно со временем.
Формат RuntimeId можно изменить. Возвращенный идентификатор следует рассматривать как непрозрачное значение и использовать только для сравнения; например, чтобы определить, находится ли элемент автоматизации в кэше.
Тип варианта: VT_I4 | VT_ARRAY
Значение по умолчанию: VT_EMPTY
UIA_SizePropertyId
30167
Определяет свойство Size , которое определяет ширину и высоту элемента автоматизации.
Тип варианта: VT_R8 | VT_ARRAY
Значение по умолчанию: VT_EMPTY
UIA_SizeOfSetPropertyId
30153
Определяет свойство SizeOfSet , которое представляет собой целое число с отсчетом от 1, связанное с элементом автоматизации. SizeOfSet описывает количество элементов автоматизации в группе или наборе, которые считаются одноуровневыми.
SizeOfSet работает в координации со свойством PositionInSet для описания количества элементов в наборе.
Тип варианта: VT_I4
Значение по умолчанию: 0
UIA_VisualEffectsPropertyId
30163
Определяет свойство VisualEffects , которое представляет собой битовое поле, определяющее эффекты для элемента автоматизации, такие как тень, отражение, свечение, мягкие края или скос.
VisualEffects:
  • VisualEffects_Shadow: 0x1
  • VisualEffects_Reflection: 0x2
  • VisualEffects_Glow: 0x4
  • VisualEffects_SoftEdges: 0x8
  • VisualEffects_Bevel: 0x10
Тип варианта: VT_I4
Значение по умолчанию: 0
.

Python @property: как его использовать и зачем?

Программирование на Python

предоставляет нам встроенный декоратор @property , который значительно упрощает использование геттеров и сеттеров в объектно-ориентированном программировании.

Прежде чем вдаваться в подробности того, что такое декоратор @property , давайте сначала разберемся, зачем он вообще может понадобиться.


Класс без геттеров и сеттеров

Предположим, что мы решили создать класс, который хранит температуру в градусах Цельсия.Также будет реализован метод преобразования температуры в градусы Фаренгейта. Один из способов сделать это:

  класс Цельсия: def __init __ (self, temperature = 0): self.temperature = температура def to_fahrenheit (сам): обратка (собственная температура * 1,8) + 32  

Мы можем создавать объекты из этого класса и манипулировать атрибутом temperature по своему желанию:

  # Базовый метод установки и получения атрибутов в Python класс Цельсия: def __init __ (self, temperature = 0): я.температура = температура def to_fahrenheit (сам): обратка (собственная температура * 1,8) + 32 # Создаем новый объект человек = Цельсий () # Установить температуру человеческая температура = 37 # Получить атрибут температуры печать (человеческая температура) # Получение метода to_fahrenheit печать (human.to_fahrenheit ())  

Выход

  37 98.60000000000001  

Дополнительные десятичные разряды при преобразовании в градусы Фаренгейта возникли из-за арифметической ошибки с плавающей запятой.Чтобы узнать больше, посетите Python Ошибка арифметики с плавающей запятой.

Каждый раз, когда мы назначаем или извлекаем какой-либо атрибут объекта, например temperature , как показано выше, Python ищет его во встроенном атрибуте словаря __dict__ объекта.

  >>> человек .__ dict__ {'температура': 37}  

Следовательно, ман. Температура внутренне становится ман .__ dict __ ['температура'] .


Использование геттеров и сеттеров

Предположим, мы хотим расширить возможности использования класса Celsius , определенного выше.Мы знаем, что температура любого объекта не может опускаться ниже -273,15 градусов по Цельсию (Абсолютный ноль в термодинамике)

Давайте обновим наш код, чтобы реализовать это ограничение значения.

Очевидным решением вышеуказанного ограничения будет скрытие атрибута temperature (сделать его частным) и определение новых методов получения и установки для управления им. Это можно сделать так:

  # Создание методов получения и установки класс Цельсия: def __init __ (self, temperature = 0): я.set_temperature (температура) def to_fahrenheit (сам): return (self.get_tempera () * 1.8) + 32 # метод получения def get_tempera (self): вернуть self._temperature # метод установки def set_temperature (self, value): если значение <-273,15: поднять ValueError («Температура ниже -273,15 невозможна.») self._temperature = значение  

Как мы видим, вышеупомянутый метод вводит два новых метода get_tempera () и set_temperature () .

Кроме того, температура была заменена на _ температура . Нижнее подчеркивание _ в начале используется для обозначения частных переменных в Python.


Теперь воспользуемся этой реализацией:

  # Создание методов получения и установки класс Цельсия: def __init __ (self, temperature = 0): self.set_temperature (температура) def to_fahrenheit (сам): return (self.get_tempera () * 1.8) + 32 # метод получения def get_tempera (self): вернуть себя._temperature # метод установки def set_temperature (self, value): если значение <-273,15: поднять ValueError («Температура ниже -273,15 невозможна.») self._temperature = значение # Создаем новый объект set_tempera (), вызываемый изнутри функцией __init__ человек = Цельсий (37) # Получить атрибут температуры через геттер печать (human.get_tempera ()) # Получить метод to_fahrenheit, get_tempera (), вызванный самим методом печать (human.to_fahrenheit ()) # новая реализация ограничения человек.заданная температура (-300) # Получение метода to_fahreheit печать (human.to_fahrenheit ())  

Выход

  37 98.60000000000001 Отслеживание (последний вызов последний): Файл «<строка>», строка 30, в <модуле> Файл "<строка>", строка 16, в set_temperature ValueError: Температура ниже -273,15 невозможна.  

Это обновление успешно реализовало новое ограничение. Нам больше не разрешается устанавливать температуру ниже -273.15 градусов по Цельсию.

Примечание : частных переменных в Python фактически не существует. Есть просто нормы, которым нужно следовать. Сам язык не накладывает никаких ограничений.

  >>> человеческая_температура = -300 >>> human.get_temperature () -300  

Однако более серьезная проблема с вышеуказанным обновлением заключается в том, что все программы, реализовавшие наш предыдущий класс, должны изменить свой код с obj.temperature на obj.get_tempera () и все выражения вроде obj.temperature = val от до obj.set_temperature (val) .

Этот рефакторинг может вызвать проблемы при работе с сотнями тысяч строк кода.

В общем, наше новое обновление не имело обратной совместимости. Здесь на помощь приходит @property .


Класс собственности

Питонический способ справиться с вышеуказанной проблемой - использовать свойство класса .Вот как мы можем обновить наш код:

  # using класс свойств класс Цельсия: def __init __ (self, temperature = 0): self.temperature = температура def to_fahrenheit (сам): обратка (собственная температура * 1,8) + 32 # получатель def get_tempera (self): print ("Получение значения ...") вернуть self._temperature # сеттер def set_temperature (self, value): print ("Значение параметра ...") если значение <-273,15: поднять ValueError ("Температура ниже -273.15 невозможно ») self._temperature = значение # создание объекта свойства температура = свойство (get_tempera, set_temperature)  

Мы добавили функцию print () внутри get_temperature () и set_temperature () , чтобы четко видеть, что они выполняются.

Последняя строка кода превращает объект свойства в температуру . Проще говоря, свойство прикрепляет некоторый код ( get_temperature и set_temperature ) к доступам к атрибуту элемента ( temperature ).

Давайте использовать этот код обновления:

  # using класс свойств класс Цельсия: def __init __ (self, temperature = 0): self.temperature = температура def to_fahrenheit (сам): обратка (собственная температура * 1,8) + 32 # получатель def get_tempera (self): print ("Получение значения ...") вернуть self._temperature # сеттер def set_temperature (self, value): print ("Значение параметра ...") если значение <-273,15: поднять ValueError ("Температура ниже -273.15 невозможно ») self._temperature = значение # создание объекта свойства температура = свойство (get_tempera, set_temperature) человек = Цельсий (37) печать (человеческая температура) печать (human.to_fahrenheit ()) человеческая температура = -300  

Выход

  Значение настройки ... Получение ценности ... 37 Получение ценности ... 98.60000000000001 Значение настройки ... Отслеживание (последний вызов последний): Файл «<строка>», строка 31, в <модуле> Файл «<строка>», строка 18, в set_temperature ValueError: Температура ниже -273 невозможна  

Как мы видим, любой код, который получает значение temperature , автоматически вызывает get_tempera () вместо поиска по словарю (__dict__).Точно так же любой код, который присваивает значение температуре , автоматически вызывает set_temperature () .

Мы даже можем видеть выше, что set_temperature () вызывалась даже тогда, когда мы создавали объект.

  >>> человек = Цельсий (37) Значение настройки ...  

Угадайте, почему?

Причина в том, что при создании объекта вызывается метод __init __ () . Этот метод имеет строку self.температура = температура . Это выражение автоматически вызывает set_temperature () .

Точно так же любой доступ, например c.temperature , автоматически вызывает get_tempera () . Вот что делает собственность. Вот еще несколько примеров.

  >>> человеческая температура Получение ценности 37 >>> человеческая температура = 37 Значение настройки >>> c.to_fahrenheit () Получение ценности 98.60000000000001  

Используя свойство , мы видим, что не требуется никаких изменений в реализации ограничения значения.Таким образом, наша реализация обратно совместима.

Примечание : Фактическое значение температуры сохраняется в частной переменной _temperature . Атрибут temperature - это объект свойства, который предоставляет интерфейс для этой частной переменной.


Декоратор @property

В Python property () - это встроенная функция, которая создает и возвращает объект property . Синтаксис этой функции:

  свойство (fget = None, fset = None, fdel = None, doc = None)  

где,

  • fget - функция для получения значения атрибута
  • fset - функция для установки значения атрибута
  • fdel - функция для удаления атрибута
  • doc - строка (как комментарий)

Как видно из реализации, эти аргументы функции необязательны.Итак, объект свойства можно просто создать следующим образом.

  >>> свойство () <объект недвижимости по адресу 0x0000000003239B38>  

Объект свойства имеет три метода: getter () , setter () и deleter () , чтобы в дальнейшем указать fget , fset и fdel . Это означает, что строка:

  температура = свойство (get_tempera, set_temperature)  

можно разбить как:

  # сделать пустое свойство температура = свойство () # назначить fget температура = температура.геттер (get_tempera) # назначить fset temperature = temperature.setter (set_temperature)  

Эти две части кода эквивалентны.

Программисты, знакомые с декораторами Python, могут понять, что указанная выше конструкция может быть реализована как декораторы.

Мы даже не можем определить имена get_temperature и set_temperature , поскольку они не нужны и загрязняют пространство имен классов.

Для этого мы повторно используем имя temperature при определении наших функций получения и установки.Давайте посмотрим, как это реализовать в качестве декоратора:

  # Использование декоратора @property класс Цельсия: def __init __ (self, temperature = 0): self.temperature = температура def to_fahrenheit (сам): обратка (собственная температура * 1,8) + 32 @свойство def температура (self): print ("Получение значения ...") вернуть self._temperature @ temperature.setter def температура (self, value): print ("Значение параметра ...") если значение <-273.15: поднять ValueError («Температура ниже -273 невозможна») self._temperature = значение # создать объект человек = Цельсий (37) печать (человеческая температура) печать (human.to_fahrenheit ()) coldest_thing = Цельсия (-300)  

Выход

  Значение настройки ... Получение ценности ... 37 Получение ценности ... 98.60000000000001 Значение настройки ... Отслеживание (последний вызов последний): Файл «<строка>», строка 29, в <модуле> Файл «<строка>», строка 4, в __init__ Файл "", строка 18, по температуре ValueError: Температура ниже -273 невозможна  

Вышеупомянутая реализация проста и эффективна.Это рекомендуемый способ использования , свойство .

.

Смотрите также