如何在python中使类字段[list]只读?

时间:2010-07-18 04:46:08

标签: python oop

我班上有self.some_field = [] 我在询问有没有办法让这个列表像一个属性一样只读?

2 个答案:

答案 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)

如果您指的是属性,则将其设为只读属性。如果你的意思是列表本身,那么使用元组代替它,因为它们是不可变的。