Mejorar este código - 2a parte

damufo damufo en gmail.com
Mar Jun 3 10:02:22 CEST 2008



eber_ramirez en ltv.org.mx escribiu:
>> encontré particularmente complicado el simplificar esta porción del 
> código.
> 
> FR=float(self.FR_t.get())
> b=float(self.b_t.get())
> d=float(self.d_t.get())
> fc=float(self.fc_t.get())
> fy=float(self.fy_t.get())
> As=float(self.As_t.get())
> 
> Hay varias formas de plantear esto... yo agruparía las entries en un 
> único objeto, ya sea una clase/struct o un diccionario; te muestro aquí 
> como se podría hacer con un diccionario, es lo más simple. Pongamos que 
> este diccionario sea "self.entries" y que contiene pares (nombre, 
> entry). Podemos obtener los valores de las variables así:
> 
> variables = dict((k, float(entry.get())) for (k, entry) in 
> self.entries.iteritems())
> 
> y luego en los cálculos usarlas tal que así:
> 
> variables["fc_t"] * variables["As_t"]
> 
> En la solución con clase/struct accederías de forma más elegante:
> 
> variables.fc_t * variables.As_t
> 
> Ver http://pythonesfaq.k-rolus.net/#index33h3
> 
> ====================================================
> Arnau, estoy tratando de implementar esta última solución que me diste, 
> clase/struct, pero tengo un problema con los diccionarios y estoy 
> definitivamente atorado.
> 
>>>> class Struct:
>         def __init__(self, **entries):
>             self.__dict__.update(entries)
>         
>         def __repr__(self):
>             args = ['%s=%s' % (k, repr(v)) for (k, v) in vars(self).items()]
>             return 'Struct(%s)' % ', '.join(args)
> 
> 
>>>> variable = Struct(FR=0.9, b=20.0, d=40.0, fy=4200.0, fc=250.0, As=2.54)
>>>> print variable.__dict__
> {'FR': 0.90000000000000002, 'b': 20.0, 'd': 40.0, 'fy': 4200.0, 'As': 2.54, 'fc': 250.0}
> 
> ¡¡¡El orden de las variables que quiero utilizar han cambiado!!!  
> Nota que As y fc ahora han intercambiado de posición en el orden.
> Esto me genera un problema porque los entries los he metido en un bucle para 
> no tener que teclear variable por variable, pero requiero que estén en el orden
> que necesito, es decir, el que le di originalmente a Struct.
> ¿Alguna sugerencia o link adónde acudir? 
> Gracias.

A lo mejor es una tontería pero, y si defines una tupla con las claves 
del diccionario en el orden que deseas y despues para solicitar los 
valores en tu bucle recorres esta tupla?


> 
> 
> Este correo electrónico y cualquier archivo transmitido con él son confidenciales y son solamente para el uso del individuo o entidad a la que van dirigidos. Si recibió este correo electrónico por error por favor notifique al administrador del sistema. Este mensaje contiene información confidencial y es dirigido a la persona implicada. Si usted no es esa persona no debería diseminar, distribuir o copiar este mensaje de correo electrónico.
> This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail.
> _______________________________________________
> Lista de correo Python-es 
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
> 
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es