[pyar] Optimizacion vs (codigo limpio y generico)
Pedro Jose Pezzarini
jose2190 en gmail.com
Mar Abr 22 21:50:10 ART 2014
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/fb386a40/attachment.html>
More information about the pyar
mailing list