[pyar] Problema de patrones/diseño
Andrés Gattinoni
andresgattinoni en gmail.com
Mie Ene 12 17:01:35 ART 2011
No sé si alguna vez supe si hay algún patrón para esto, pero si fue
así, ya me lo olvidé.
Problema: tengo una clase madre (Backend) y una serie de clases hijas
que implementan distintos backends concretos. La clase Backend define
la interfaz pública de un backend y las hijas hacen lo necesario para
cada tipo de backend para llevar a cabo la operación correspondiente.
Hasta ahí ningún problema. El tema es que hay ciertas operaciones
comunes (por ejemplo, validaciones de tipos de datos) que yo quisiera
hacer en todos los métodos públicos, pero no quiero repetir código.
Cuál es la mejor forma de hacerlo?
Les muestro un ejemplo de algo parecido a lo que tengo ahora:
class Item (object):
pass
class Backend (object):
def add_item (self, item):
if not isinstance(item, Item)
raise Exception("An Item object was expected")
self._add_item(item)
def _add_item (self, item):
pass
class SQLBackend (Backend):
def _add_item (self, item):
self.db.insert(item)
backend = SQLBackend()
backend.add_item('stuff')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in add_item
Exception: An Item object was expected
Hay alguna forma mejor y/o más pythónica de hacer esto?
More information about the pyar
mailing list