[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