Комментарии 9
property - это неочевидное поведение для программиста, использующего класс.
c.temperature = 1
выглядит как прямая перезапись атрибута 'temperature' объектом int(1)
На деле же при ассигновании выполняется скрытая логика, о чем можно узнать только если перейти в реализацию класса и запомнить этот факт именно с этим свойством. Читаемость кода как раз падает, из-за того что появляются дыры в понимании, что конкретно делает программа.
А вот get/set это очевидные команды объекту с очевидной логикой.
Я бы вообще удалил properties из питона.
На проверку в статье 4 совета. От себя добавлю пятый, для автора: не привирай.
Одним из самых используемых встроенных декораторов является @property. Множетсво ООП языков(Java, С++) предоставляют возможность использовать геттеры и сеттеры. Данные функции используются с целью гарантировать, что наша переменная не вернет/установит некорректное значение.
Для С++ в том виде, в котором это подразумевается в статье - это не верно. Путаница с Borland C++Builder
temp = 0 def decorator_1(func): print('Running our function') return func def temperature(): return temp decorator_1(temperature())
Где здесь декоратор? Ниже вы приводите определение декоратора как функции, которая в качестве аргумента принимает другую функцию. Это конечно не всё определение. Но этот пример даже данное условие не выполняет.
ps: обращаюсь к вам так как принимая решение о переводе вы также берёте на себя часть ответственности за содержание
pss: не смотря на то что я уважаю чужой труд, считаю бессмысленные статьи(и их переводы) только создают информационный шум
Шаг 1. Базовое понимание декораторов
Шаг 2. Продвинутое использование декораторов
Пересмотрите код. Данное условие он как раз выполняет. Берет за аргумент другую функцию.
5 советов по использованию декораторов в Python