Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使类字段[列表]为只读?_Python_Oop - Fatal编程技术网

如何在python中使类字段[列表]为只读?

如何在python中使类字段[列表]为只读?,python,oop,Python,Oop,我在班上有self.some_field=[]的课程 我在询问是否有办法使此列表像属性一样只读 如果您指的是属性,则将其设置为只读属性。如果您指的是列表本身,那么请使用元组,因为它们是不可变的。实际上,您需要将其设置为一个属性…:例如,在\uuu init\uuu self._some_field = [] 然后在课程的主体中: @property def some_field(self): return self._some_field 请注意,这并不会使列表本身保持不变:失败的是

我在班上有self.some_field=[]的课程

我在询问是否有办法使此列表像属性一样只读

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

实际上,您需要将其设置为一个属性…:例如,在
\uuu init\uuu

self._some_field = []
然后在课程的主体中:

@property
def some_field(self):
    return self._some_field
请注意,这并不会使列表本身保持不变:失败的是一个赋值,比如

self.some_field = 'bah'
self.some_field.append('blah')
不是突变子的召唤,比如

self.some_field = 'bah'
self.some_field.append('blah')
如果要使字段不可变,根据定义,它不能是列表(因为列表是可变序列)——它必须是其他类型的序列(不可变序列),您需要为此进行定义