Creant objectes a la manera de Python.

Escrit per Aaloy a 09 de September , 2007 a les 10:33 p.m.

He estat mirant coses damunt patrons de disseny aplicables al model d'interfície gruixuda d'usuari, aplicables a la programació amb wxPython, arribant a tres patrons:
  • El patró MVC (Model view controller) de sobres conegut per la gent que es dedica al desenvolupament web fonamentalment.
  • El patró MVP (Model view presenter) , que intenta fer que la part d'interacció sigui més testejable y que Flower ha considerat que s'havia de xapar en dos.
  • El patró Presentació Model, que independitza la capa de presentació de la vista, en un intent de separar el que és la part de comportament i estat de la vista en un model que és part de la presentació però que no es específic d'una implementació d'interfície concreta.
Llegint el codi he arribat una manera de construir objectes a partir de llistes que no havia fet servir fins ara. Això s'explica millor amb un exemple: class Agenda: ... def __init__(self, nom, llinatge, telefon, amic=True): ... self.nom = nom ... self.llinatge = llinatge ... self.telefon = telefon ... self.amic = amic ... La manera habitual de crear un objecte de tipus Agenda seria per exemple amic = Agenda('toni','aloy','971xxxxxxx') Suposem ara que tenim la informació dins una llista o una tupla, bastant habitual si per exemple hem importat les dades d'un arxiu de text o des de una base de dades, aleshores podem tenir la informació com un_amic =('Pau','Rul·lan','971xxxxxxx') La creació de l'objecte és molt ràpida d'escriure amic2 = Agenda(*un_amic) amic2.nom 'Pau' És a dir, s'han substituït els paràmetres de construcció de l'objecte pels valors de la llista. Aquesta substitució és posicional, és a dir, el primer valor correspon al primer paràmetre, el segon al segon, etc. La sintaxi és conseqüent amb la manera d'anomenar llistes de paràmetres en la construcció de funcions, per exemple: def prova (x, *y): ... print x ... for item in y: ... print item ... prova(2,3,4,5,6,7) 2 3 4 5 6 7 prova (2,7,10) 2 7 10 Però clar, si això funciona d'aquesta manera i estam parlant de Python i haurà una manera obvia de fer el mateix si en lloc d'una llista tenim un diccionari, és a dir, ara tenim: un_amic ={'nom':'Benjamí','llinatge':'Villoslada','telefon':'971xxxxxxx'} Les claus del diccionari coincideixen amb els noms dels paràmetres, i hauríem de poder fer amic3 = Agenda(**un_amic) Això és Python, i per tant amic3.nom 'Benjam\xc3\xad'
Enllaços citats

3 comentaris, 0 trackbacks (URL) , Tags: Python


Comentaris


1 Comentari de paurullan a les 06:04 del Sunday 13 Apr de 2008

És que el mamon és còmode com ell sol. I si llavors t’aveses a fer feina amb la part funcional, els iteradors (que molen un munt!) i el tipat de bitxo amb plomes m’entren dubtes de si enguany seré capaç de fer una pràctica amb altre cosa ^_^

P.S.: Casi ploro quan he vist que m’has usat d’exemple ^_~



2 Comentari de Benjamí a les 06:04 del Sunday 13 Apr de 2008

El paharo dels exemples em sona! (gràcies ;)



3 Comentari de aaloy a les 06:04 del Sunday 13 Apr de 2008

Els vostres noms van molt bé per provar l'unicode :P



Avís: Els comentaris es tanquen automàticament als 30 dies