Понимание декоратора свойств классов Python

Фото Ральфа (Рави) Кайдена на Unsplash

Введение

В объектно-ориентированном программировании каждый атрибут класса может иметь три основных метода:

  1. Метод получения значения
  2. Метод установки для установки его значения
  3. Метод удаления, чтобы удалить его

Однако жизнь не так проста, как в приведенном выше примере. Как мы можем справиться с неправильным вводом, например Yang._score = -10или Yang._score = 99999?

Хорошая идея - написать функцию установки self._scoreдля проверки входного значения.

Выглядит неплохо, но мы все равно можем напрямую установить недопустимое значение:

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

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

Фото Себа Моузе на Unsplash

Как использовать декоратор свойств?

Давайте изменим Studentкласс следующим образом:

Как показано в приведенном выше коде, после использования @propertyдекоратора мы можем как установить значение напрямую, так и гарантировать его действительность. Декоратор свойств - очень полезный и широко используемый механизм в классах Python. Это помогает нам вызывать методы получения, установки и удаления непосредственно с помощью атрибута.

Распространенный шаблон для использования декоратора свойств:

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

Другой способ использования декоратора свойств

Свойство представляет собой просто встроенный декоратор в Python. Поэтому, как и другие декораторы, мы можем использовать его по-другому:

property(fget=None,fset=None,fdel=None,doc=None)Функция имеет четыре параметра:

  • fget () - используется для получения значения атрибута
  • fset () - используется для установки значения атрибута
  • fdel () - используется для удаления значения атрибута
  • doc () - строка, содержащая документацию (docstring) для атрибута

Как мы знаем, есть три метода (геттер, сеттер и удалитель), которые мы можем определить с помощью декоратора свойств. Если один из трех методов не определен, мы не можем использовать этот метод. Следовательно, мы можем умело использовать декоратор свойств для определения атрибута только для чтения. Например:

Как показано в приведенном выше примере, мы не определяем метод установки score, поэтому scoreего нельзя установить. Другими словами, это атрибут только для чтения. Это важный сценарий использования декоратора свойств.

Заключение

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

Спасибо за прочтение. Больше руководств по Python:

Ultimate Python Tutorial (продолжайте обновлять)

Suggested posts

Поиск информации о доменных именах

Отрывок из книги «Маленькие программные инструменты Sharp» Брайана П. Хогана.

Поиск информации о доменных именах

Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.

Как бесплатно запускать плагины ChatGPT с помощью Langchain

Как бесплатно запускать плагины ChatGPT с помощью Langchain

Вы, должно быть, слышали обо всех новых мощных плагинах ChatGPT, таких как Browser, Code Interpreter и т. д. Но есть проблема: доступ к плагинам ограничен списком ожидания, и поэтому многие не имеют к нему доступа.

Related posts

Обучение на рабочей неделе важнее, чем вы думаете

Обучение на рабочей неделе важнее, чем вы думаете

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

«Обнаруженная Марианская впадина: раскрытие ужасающих скрытых истин бездны»

«Обнаруженная Марианская впадина: раскрытие ужасающих скрытых истин бездны»

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

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

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

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.