[Python] Mutazione di un oggetto dall'interno...
Manlio Perillo
manlio_perillo a libero.it
Ven 23 Feb 2007 17:19:38 CET
Massimo ha scritto:
> Si, il subject fa pena, ma non m'è venuto in mente altro...
> Sto cercando di farmi un framework con SQLAlchemy. Vorrei fare in modo
> che un oggetto (mappato con un mapper su una Table, ma questo poco
> importa...) disponga di un metodo .read() che legga, appunto, i valori
> dal dbms.
>
> Il problema è che qualcos'altro restituisce quell'oggetto una volta
> caricato. In particolare, funziona:
>
> caricato = session.query(caricato.__class__).get(pk_tuple)
>
> Io però ora vorrei scrivere il metodo .read(), qualcosa di simile a:
>
> def read(self, keyvalues=None):
> '''loads the object in memroy'''
>
> if keyvalues is None:
> keyvalues = self.getPkValues()
> tmp = self.session.query(self.__class__).get(keyvalues)
> if tmp is not None:
> # fare qualcosa
>
> In tmp ho l'oggetto caricato (se esiste, altrimenti None), ma è
> un'istanza diversa dall'oggetto su cui ho chiamato .read()
>
> Quello che mi/vi chiedo è se sia possibile (prima di tutto
> concettualmente) fare in modo che quel "# fare qualcosa" corrisponda a
> trasformare in toto l'oggetto puntato da self nell'oggetto puntato da tmp.
> Qualche idea o commento?
>
In linea di massima quello che vuoi fare non mi sembra il modo migliore
di procedere.
Perchè ti serve una cosa del genere?
Per quanto riguarda la parte tecnina, ricorda che a fini pratici due
oggetti sono uguali se il loro stato è uguale.
In teoria quindi bastarebbe fare
self.__dict__.update(tmp.__dict__)
Ma non tutto lo stato si trova nel dizionario, ci sono anche le property.
Così su due piedi non so dirti come fare a copiare tutto.
> Grazie,
> Max.
>
> p.s. ho provato ad iscrivermi alla ml di SQLAlchemy, gestita da google,
> e ricevo i messaggi ma non riesco a spedirne. Qualcuno l'ha mai usata e
> mi può gentilmente suggerire "le basi"? Grazie ancora...
>
Google non ti manda i messaggi che tu hai spedito, come succede in
questa mailing list, ad esempio.
Hai provavo a vedere dall'interfaccia web?
Saluti Manlio Perillo
Maggiori informazioni sulla lista
Python