我班上有self.some_field = [] 我在询问有没有办法让这个列表像一个属性一样只读?
答案 0 :(得分:7)
你需要把它变成一个属性......:例如,在__init__
self._some_field = []
然后在课堂上:
@property
def some_field(self):
return self._some_field
请注意,不会使列表本身不可变:失败的是赋值,例如,
self.some_field = 'bah'
不一个mutator的调用,比如说,
self.some_field.append('blah')
如果你想让字段不可变,根据定义,它不能是一个列表(因为列表是一个可变序列) - 它必须是你需要定义的其他类型的序列(一个不可变的序列)目的。
答案 1 :(得分:1)
如果您指的是属性,则将其设为只读属性。如果你的意思是列表本身,那么使用元组代替它,因为它们是不可变的。