[pyar] Optimizacion vs (codigo limpio y generico)
Pedro Jose Pezzarini
jose2190 en gmail.com
Mar Abr 22 22:03:44 ART 2014
Obviamente que en el código final utilizo __slots__ para mejorar la
optimizacion.
https://docs.python.org/2/reference/datamodel.html
El 22 de abril de 2014, 21:50, Pedro Jose Pezzarini
<jose2190 en gmail.com>escribió:
> Estoy trabajando en un sistema, y tengo la cuantiosa duda de todo
> desarrollador (almenos la mayoría), optimización vs codigo limpio.
>
> Tengo esta clase (keep scrolling, está mas abajo).
>
> Donde quiero utilizar un método generico "set" y "get", para ello utilizo
> __map para mapear los attrs que son seteables.
>
> Pregunta:
> ¿Les parece correcto o es una medio monstuosidad? ... ¿Alguien tiene algo
> más óptimo o lugar donde leer sobre esto?
>
> Desde ya saludos!
> Pedro
>
> class BaseAudio(object):
>
> """docstring for BaseAudio"""
>
> def __init__(self):
> self.author = None
> self.title = None
> self.times = TimeTraking()
> self.url = None
>
> self.__map = {
> "author": {
> "getter": getattr(self, "_getAuthor"),
> "setter": getattr(self, "_setAuthor")},
>
> "title": {
> "getter": getattr(self, "_getTitle"),
> "setter": getattr(self, "_setTitle")},
>
> "times": {
> "getter": getattr(self, "_getTimes"),
> "setter": getattr(self, "_setTimes")},
>
> "url": {
> "getter": getattr(self, "_getUrl"),
> "setter": getattr(self, "_setUrl")},
>
> }
>
> def keys(self):
> return( self.__map.keys() )
>
>
> # Helpers: Getters
> def _getAuthor(self):
> return( self.author )
>
> def _getTitle(self):
> return( self.title )
>
> def _getTimes(self):
> return( self.times )
>
> def _getUrl(self):
> return( self.url )
>
> # Helpers: Setters
> def _setAuthor(self, author):
> self.author = author
>
> def _setTitle(self, title):
> self.title = title
>
> def _setTimes(self, times):
> self.times = times
>
> def _setUrl(self, url):
> self.url = url
>
> # Getter for all attributes in __map
> def get(self, attr):
> if (attr in self.__map):
> return( self.__map[attr]["getter"]() )
> else:
> raise NameError("BASEAUDIO:GETTER:KEYERROR")
>
> # Setter for all attributes in __map
> def set(self, attr, value):
> if (attr in self.__map):
> self.__map[attr]["setter"](value)
> else:
> raise NameError("BASEAUDIO:SETTER:KEYERROR")
>
>
> # |-----------------------------------------
> # | Magic Methods
> # |-----------------------------------------
>
> def __str__(self):
> # None to string
> # lambda NoneObject: NoneObject or ""
>
> formattedAudio = "%s - %s -- %s" % (self.title, self.author,
> self.times)
> return( formattedAudio )
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140422/a0e03d05/attachment.html>
More information about the pyar
mailing list