Предпочтительный способ определения свойств в Python: декоратор свойств или лямбда?

Что является предпочтительным способом определения свойств класса в Python и почему? Можно ли использовать оба метода в одном классе?

@property def total(self): return self.field_1 + self.field_2 

или

 total = property(lambda self: self.field_1 + self.field_2) 

  • установка Reportlab (ошибка: команда «gcc» не выполнена с статусом выхода 1)
  • Есть ли новый / обновленный Twill?
  • Python, обрабатывать большой текстовый файл параллельно
  • Как установить ограничение памяти для потока или процесса в python?
  • Как войти на сайт с помощью python и механизировать
  • Автоматизация Excel из Python
  • Почему 2 .__ добавить __ (3) работать в Python?
  • Прочитать конкретные столбцы из файла csv с помощью модуля csv?
  • 3 Solutions collect form web for “Предпочтительный способ определения свойств в Python: декоратор свойств или лямбда?”

    Форма декоратора, вероятно, лучше всего в том случае, когда вы указали, где вы хотите превратить метод в свойство только для чтения. Второй случай лучше, если вы хотите предоставить setter / deleter / docstring, а также getter, или если вы хотите добавить свойство, которое имеет другое имя, к методу, из которого оно получает свое значение.

    Для свойств только для чтения я использую декоратор, иначе я обычно делаю что-то вроде этого:

     class Bla(object): def sneaky(): def fget(self): return self._sneaky def fset(self, value): self._sneaky = value return locals() sneaky = property(**sneaky()) 

    Обновить:

    Последние версии python улучшили подход декоратора:

     class Bla(object): @property def elegant(self): return self._elegant @elegant.setter def elegant(self, value): self._elegant = value 

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

    Interesting Posts

    ошибка с мгновенным при импорте fastparquet в python

    Как я могу сказать, что подпроцесс перестает сбрасывать мои кавычки?

    разные цвета переднего плана для каждой строки в wxPython wxTextCtrl

    Декоратор Python с флягой

    Python – использование регулярных выражений для поиска нескольких совпадений и их распечатки

    Ограничение использования памяти в * Large * Django QuerySet

    Удаление небольших слов с помощью Python

    Фильтрация списка на основе списка логических элементов

    Как проверить, является ли одна строка подпоследовательностью другой?

    База данных Python Create Access с использованием win32com

    Как преобразовать целое число в шестнадцатеричное без дополнительных «0x» ведущих и «L» конечных символов в Python?

    Преобразование регулярного выражения в конечный автомат

    Как определить владельца файла в Windows с помощью python без pywin32

    Python Try-Except внутри функции

    Python выполняет функцию в течение X секунд

    Python - лучший язык программирования в мире.