[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