如何在Python中使类字段[list]为只读?
我在我的类里有一个叫做self.some_field的空列表。
我想知道有没有办法让这个列表像属性一样变成只读的?
2 个回答
1
如果你指的是属性,那就把它设置成只读的。如果你指的是列表本身,那就用元组来代替,因为元组是不可改变的。
7
你确实需要把它变成一个属性... 比如,在 __init__
里
self._some_field = []
然后在类的主体部分:
@property
def some_field(self):
return self._some_field
注意,这并不意味着列表本身是不可变的:会失败的是像这样的一个赋值,比如:
self.some_field = 'bah'
而不是调用一个修改器,比如:
self.some_field.append('blah')
如果你想让这个字段不可变,那么它不能是一个列表,因为列表是可以改变的序列——它必须是其他类型的序列(一个不可变的序列),你需要为这个目的定义它。