2010-07-18 3 views

Répondre

7

Vous devez le faire, en effet, une propriété ...: par exemple, dans __init__

self._some_field = [] 

, puis plus tard dans le corps de la classe:

@property 
def some_field(self): 
    return self._some_field 

Notez que cela ne pas rendre la liste elle-même immuable: ce qui échouera est une affectation comme, disons,

self.some_field = 'bah' 

pas l'appel d'un mutator, comme, par exemple,

self.some_field.append('blah') 

Si vous voulez rendre le champ immuable, il ne peut pas être une liste, par définition (puisque la liste est une séquence mutable) - Il doit s'agir d'un autre type de séquence (immuable) que vous devez définir à cette fin.

1

Si vous voulez dire l'attribut, alors faites-en une propriété en lecture seule. Si vous voulez dire la liste elle-même, utilisez un tuple à la place, car ils sont immuables.

Questions connexes