i have self.some_field = [] in my class
Im enquiring is there a way to make this list read-only like a property?
views:
35answers:
2
A:
If you mean the attribute, then make it a read-only property. If you mean the list itself, then use a tuple instead since they're immutable.
Ignacio Vazquez-Abrams
2010-07-18 04:48:28
+6
A:
You need to make it, indeed, a property...: e.g., in __init__
self._some_field = []
and then later in the class's body:
@property
def some_field(self):
return self._some_field
Note that this does not make the list itself immutable: what will fail is an assignment like, say,
self.some_field = 'bah'
not the call of a mutator, like, say,
self.some_field.append('blah')
If you want to make the field immutable, it cannot be a list, by definition (since a list is a mutable sequence) -- it must be some other type of sequence (an immutable one) which you need to define for the purpose.
Alex Martelli
2010-07-18 04:49:54