Re: [Python-es] ¿¿Patrón de diseño??
Chema Cortes
pych3m4 en gmail.com
Jue Jul 10 14:39:05 CEST 2008
El día 10 de julio de 2008 10:16, Beni <camontuyu en yahoo.es> escribió:
> Tengo el siguiente 'problema' de diseño... Estoy haciendo una clase que lee
> datos de una página web mediente urllib y esta tiene un conjunto de
> expresiones regulares compiladas para obtener estos datos. He puesto estas
> expresiones como variables de clase para que sean compartidas por todas las
> instancias... sería algo así:
>
> class Web:
> _RE_TXT_NOMBRE = r'foo'
> _RE_NOMBRE = re.compile(_RE_TXT_NOMBRE)
>
> _RE_TXT_APELLIDOS = r'pepe'
> _RE_APELLIDOS = re.compile(_RE_TXT_APELLIDOS)
>
> [...]
>
> Como veis me interesa tambien el texto de la expresión regular (ya que no dí
> con la forma de obtener el texto a partir de una expresión compilada).
_RE_NOMBRE.pattern
_RE_APELLIDOS.pattern
Este módulo ('sre') está programado en C y no expone sus atributos en
un diccionario, al estilo pythónico (no se ven con el dir()). Tendrás
que revisar la documentación para conocer su funcionamiento.
> El
> problema está en que las expresiones están creciendo en número y me 'afean'
> la clase.
>
> Por eso estoy buscando un método, patrón de diseño o algo pythonico para
> quede más bonito. No se,... un diccionario de expresiones regulares?...
>
> ¿Se os ocurre algo? ¿algún comentario?
Yo evitaría los atributos de clase, pero lo que puedes hacer es
agrupar todas estas expresiones regulares en un diccionario, tal como
bien dices.
Más información sobre la lista de distribución Python-es