В объектно-ориентированном программировании каждый атрибут класса может иметь три основных метода:
Однако жизнь не так проста, как в приведенном выше примере. Как мы можем справиться с неправильным вводом, например Yang._score = -10или Yang._score = 99999?
Хорошая идея - написать функцию установки self._scoreдля проверки входного значения.
Выглядит неплохо, но мы все равно можем напрямую установить недопустимое значение:
Если мы воспользуемся set_score() функцией, будет проверена достоверность значения. Но если мы забудем его использовать и по-прежнему будем устанавливать значения напрямую, проверка будет невозможна.
Следовательно, мы все еще не можем полностью гарантировать, что значение self._scoreвсегда действительно. Не говоря уже о том, что установка значения методом не так удобна, как установка его напрямую. Здесь на помощь приходит декоратор свойств.
Давайте изменим Studentкласс следующим образом:
Как показано в приведенном выше коде, после использования @propertyдекоратора мы можем как установить значение напрямую, так и гарантировать его действительность. Декоратор свойств - очень полезный и широко используемый механизм в классах Python. Это помогает нам вызывать методы получения, установки и удаления непосредственно с помощью атрибута.
Распространенный шаблон для использования декоратора свойств:
Примечание. Имена методов получения, установки и удаления должны быть одинаковыми. Лучше всего использовать имя атрибута.
Свойство представляет собой просто встроенный декоратор в Python. Поэтому, как и другие декораторы, мы можем использовать его по-другому:
property(fget=None,fset=None,fdel=None,doc=None)Функция имеет четыре параметра:
Как мы знаем, есть три метода (геттер, сеттер и удалитель), которые мы можем определить с помощью декоратора свойств. Если один из трех методов не определен, мы не можем использовать этот метод. Следовательно, мы можем умело использовать декоратор свойств для определения атрибута только для чтения. Например:
Как показано в приведенном выше примере, мы не определяем метод установки score, поэтому scoreего нельзя установить. Другими словами, это атрибут только для чтения. Это важный сценарий использования декоратора свойств.
Декоратор свойств - мощный инструмент, широко используемый в классах Python. Это позволяет нам писать краткий код, обеспечивая при этом необходимые проверки параметров, что снижает вероятность ошибок.
Спасибо за прочтение. Больше руководств по Python:
Ultimate Python Tutorial (продолжайте обновлять)
Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.
Вы, должно быть, слышали обо всех новых мощных плагинах ChatGPT, таких как Browser, Code Interpreter и т. д. Но есть проблема: доступ к плагинам ограничен списком ожидания, и поэтому многие не имеют к нему доступа.
Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.
Введение: Добро пожаловать, смелые читатели, в путешествие, которое приведет нас в самые темные глубины нашей планеты. В этом блоге мы погружаемся в загадочный мир Марианской впадины, раскрывая его скрытые секреты и открывая леденящие кровь истины, которые лежат под его поверхностью.
Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.
На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.