我有以下代码,它使用两个简单的属性:
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
错误。有没有办法修改属性的值?
修改
如果在williamtroup的回答中重写上面的代码以使用setter,那么简单地缩短它的优点是什么:
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
答案 0 :(得分:4)
你需要一个属性的setter和一个用于存储数据的类变量。
用你的例子:
70.4