У меня есть следующий код, который использует два простых свойства:Python: изменение значения свойства
class Text(object):
@property
def color(self):
return 'blue'
@property
def length(self):
return 22
t = Text()
print t.color
Когда я запускаю это, очевидно, возвращает blue
. Но как я могу обновить значение цвета «на лету» позже в коде? То есть когда я пытаюсь сделать:
t = Text()
print t.color
t.color = 'red'
print t.color
Это терпит неудачу с ошибкой can't set attribute
. Есть ли способ изменить значение свойства?
EDIT:
Если приведенный выше код переписан для использования сеттеров, как в ответ williamtroup, в чем преимущество того, чтобы просто сократить его:
class Text(object):
def __init__(self):
self.color = self.add_color()
self.length = self.add_length()
def add_color(self):
return 'blue'
def add_length(self):
return 22
Ответы правку; Не питоническая и нехорошая привычка. –
@EddB Как это не Pythonic? – mart1n
В любом случае, на вопрос был дан ответ. Это зависит от вас, чтобы решить, какой из них лучше всего реализовать. – williamtroup