Advertisement
Guest User

A custom dict

a guest
Feb 13th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.82 KB | None | 0 0
  1. class pdict(dict):
  2.     @property
  3.     def foo(self):
  4.         print("foo.getter")
  5.  
  6.     @foo.setter
  7.     def foo(self, value):
  8.         print("foo.setter", value)
  9.    
  10.     def __getattr__(self, name):
  11.         # Si se invoca este método es porque se quiere acceder
  12.         # a un atributo que no es propio del diccionario.
  13.         # Devuelve el valor asociado a `name` (o None).
  14.         return self.get(name, None)
  15.  
  16.     def __setattr__(self, name, value):
  17.         try:
  18.             # ¿La instancia contiene un atributo llamado `name`?
  19.             self.__getattribute__(name)
  20.         except AttributeError:
  21.             # No, lo uso como clave para guardar en el dict.
  22.             self[name] = value
  23.         else:
  24.             # Si, uso el mecanismo usual para asignar atributos.
  25.             super().__setattr__(name, value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement