[pyar] Optimizacion vs (codigo limpio y generico)

Angel Java Lopez ajlopez2000 en gmail.com
Mie Abr 23 07:52:34 ART 2014


Ah! Ahi voy entendiendo...

A ver, no habia entendido de tu email inicial que QUERIAS AGREGAR
propiedades dinamicamente. Vi que querias acceder a algunas ya definidas,
como title, por nombre, desde afuera.

Bien, yo llamaria a eso un objeto dinamico. A ver, sin saber de Python,
busque como implementar doesNotUndersdand de Smalltalk en Python, y veo:

http://www.gossamer-threads.com/lists/python/python/523425

Ese parece ser un camino. Tu clase crea un objeto con un diccionario, y el
__getattr__ y el __setattr__ se encargan por abajo de mapear al diccionario
interno, como tenias en alguna parte de tu codigo.

Me imagino:

obj = MyDynamicObject()
obj.name = "Adam"
obj.age = 800

y deberia salir con fritas

Pero se me escapa todo tu contexto.

Hay otros "approach" en:

http://stackoverflow.com/questions/14015592/how-to-create-a-new-unknown-or-dynamic-expando-object-in-python
http://stackoverflow.com/questions/3881895/adding-dynamic-property-to-a-python-object
http://stackoverflow.com/questions/19098231/create-dynamic-objects-python

pero no vi que fueran tan flexibles como el que puse primero. Por ejemplo,
una solucion crea un objeto dinamico PERO TODOS sus atributos van en el
constructor, no vi que luego se pudieran agregar. Pero no estoy seguro.

Y si, si yo tuviera que escribir lo que necesitas, lo escribiria con TDD ;-)

Algo parecido hice en Ruby:
https://github.com/ajlopez/AjGenesisRuby/blob/master/lib/ajgenesis/dynamic_object.rb
y I put my money where my mouth is:
https://github.com/ajlopez/AjGenesisRuby/blob/master/test/test_dynamic_object.rb

(igual habia una gema en Ruby que ya hacia eso, pero es un buen ejercicio
para mi neurona)

Alguna otra forma en Python?

Angel "Java" Lopez
@ajlopez


2014-04-23 7:37 GMT-03:00 Pedro Jose Pezzarini <jose2190 en gmail.com>:

> @FacundoBatista, gracias por tu respuesta, en consecuencia a esta, me topé
> con 2 buenos artículos (
> http://dirtsimple.org/2004/12/python-is-not-java.html y
> http://tomayko.com/writings/getters-setters-fuxors ).
>
> Necesito que mi objeto pueda variar con el tiempo en sus atributos, pero
> quiero seguir utilizando accessor y mutators de la misma forma, similar a
>
> myobject.accessor(attributeName)
> myobject.mutator(attributeName, value)
>
>
>
> @ClaudioOmarMelendrezBaeza, quizás desde un punto de vista más teórico (
> http://codebetter.com/raymondlewallen/2005/07/19/4-major-principles-of-object-oriented-programming/)
> la transición hacia la implementación se traduce mejor con la manera que
> Java lo hace. Pero me guardo el derecho a la duda, de suponer que varios
> pilares de la OOP fueron modificados, por la metodología de algunos
> lenguajes.
>
>
> Saludos y gracias por su respuesta.
>
>
> El 23 de abril de 2014, 0:03, Claudio Omar Melendrez Baeza <
> claudio.melendrez en gmail.com> escribió:
>
> Viendo esto de getters y setters me hace preguntarme por qué se usa
>> preferentemente Java como lenguaje de iniciación a la POO... :S
>> Aguante Pascal. Ja.
>>
>>
>> 2014-04-22 22:46 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:
>>
>> 2014-04-22 21:50 GMT-03:00 Pedro Jose Pezzarini <jose2190 en gmail.com>:
>>>
>>> > Estoy trabajando en un sistema, y tengo la cuantiosa duda de todo
>>> > desarrollador (almenos la mayoría), optimización vs codigo limpio.
>>>
>>> Siempre es mejor optimizar código correcto, que corregir código
>>> optimizado. Ergo, primero escribilo limpio y bien, después (si es
>>> necesario, y sólo si es necesario) lo optimizás.
>>>
>>>
>>> > Donde quiero utilizar un método generico "set" y "get", para ello
>>> utilizo
>>> > __map para mapear los attrs que son seteables.
>>>
>>> No, en Python no se usan getters y setters. Creo que lo explicó Fisa
>>> hoy o ayer en otro thread (y si no, ¿cómo es que no tenemos una
>>> entrada en la FAQ para este tema?).
>>>
>>> La idea, en pocas palabras, es: no usés setter y getter porque a
>>> priori son un paso innecesario, y si alguna vez lo necesitás, tenés
>>> "property".
>>>
>>>
>>> > Pregunta:
>>> > ¿Les parece correcto o es una medio monstuosidad? ... ¿Alguien tiene
>>> algo
>>> > más óptimo o lugar donde leer sobre esto?
>>>
>>> En esa clase hacés cosas muy... raras. ¿Cual es el comportamiento que
>>> estás buscando? ¿De qué maneras estás queriendo usar la clase?
>>>
>>> Creo que si nos pasás un par de lineas de ejemplo de cómo te gustaría
>>> usar la clase, te podemos ayudar mejor.
>>>
>>> LLAP,
>>>
>>> --
>>> .    Facundo
>>>
>>> Blog: http://www.taniquetil.com.ar/plog/
>>> PyAr: http://www.python.org/ar/
>>> Twitter: @facundobatista
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140423/5087d7d7/attachment.html>


More information about the pyar mailing list