[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