[attributs, objets] Possibilité d'utiliser directement les methodes sur les liste renvoyé par __getitems__ sur un cransLdapObjet
Au lieu d'être obligé de faire à chaque fois obj[attr] = obj[attr] + [val] on peut faire directement obj[attr].append(val). Si on affecte obj[attr] à une variable (l=obj[attr]) et que l'on modifie la variable (l.append(val)), a la fois la variable et obj[attr] sont modifié et maintenue à jour. Attention toutefois : l1 = obj[attr] l2 = obj[attr] l1 == l2 <=> True l1.append(val) l1 == obj[attr] <=> True l1 == l2 <=> False l2 == obj[attr] <=> False et l2.append(val) lèvera une exception.
This commit is contained in:
parent
8739640687
commit
03c45b8889
2 changed files with 54 additions and 3 deletions
|
@ -396,11 +396,11 @@ class CransLdapObject(object):
|
|||
|
||||
def __getitem__(self, attr, default=None):
|
||||
if self._modifs.has_key(attr) and self.mode in [ 'w', 'rw' ]:
|
||||
return [ v for v in self._modifs[attr] ]
|
||||
return attributs.AttrsList(self, attr, [ v for v in self._modifs[attr] ])
|
||||
elif self.attrs.has_key(attr):
|
||||
return [ v for v in self.attrs[attr] ]
|
||||
return attributs.AttrsList(self, attr, [ v for v in self.attrs[attr] ])
|
||||
elif self.has_key(attr):
|
||||
return [] if default is None else default
|
||||
return attributs.AttrsList(self, attr, []) if default is None else default
|
||||
raise KeyError(attr)
|
||||
|
||||
def has_key(self, attr):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue