[Plone-IT] creare una classe al volo in zope
Yuri
yurj a alfa.it
Mer 5 Mar 2008 11:20:02 UTC
Fabrizio Reale wrote:
> Alle mercoledì 5 marzo 2008, Yuri ha scritto:
>
>> Ciao,
>>
>> nel tentativo di catalogare oggetti virtuali, in modo da usare il
>> catalogo di zope come db, in un python script ho fatto questo:
>>
>> ========
>> class Autore:
>> " classe per il catalogo "
>>
>> def set_autore(self, autore=''):
>> """ setta l'autore """
>> self.autore=autore
>>
>> def set_variante(self, variante=''):
>> """ setta l'autore """
>> self.variante = variante
>>
>> def variante(self):
>> """ ritorna la variante """
>> return self.variante
>>
>> def set_qualificazione(self, qualificazione=''):
>> """ setta la qualificazione """
>> self.qualificazione = qualificazione
>>
>> def qualificazione(self):
>> """ ritorna la qualificazione """
>> return self.qualificazione
>>
>>
>> un_autore = Autore()
>> un_autore.set_autore('prova')
>> un_autore.set_variante('una variante')
>> un_autore.set_qualificazione('una qualificazione')
>>
>> print un_autore.variante()
>> print un_autore.qualificazione()
>>
>> return printed
>>
>> ======
>>
>> Ovviamente non va:
>>
>> *Error Type: Unauthorized*
>> *Error Value: You are not allowed to access set_autore in this context*
>>
>> Ho visto che un zsql method può associare i risultati di una query a una
>> classe, ma non ho db relazionali (i dati li prendo da un'altra parte).
>> Un external method può caricare solo una funzione, non una classe...
>> devo per forza scrivere un prodotto?
>>
>
> Non usare metodi, ma solo attributi per la tua classe.
> Fabry
>
Mmmm e posso accedere agli attributi? Mi pare di no:
*Error Type: TypeError*
*Error Value: attribute-less object (assign or del)*
*
codice:
===
class Autore:
" classe per il catalogo "
autore = ''
variante = ''
qualificazione = ''
il_file = context.DataBase.fonotecapref['autori2']
autori = str(il_file)
for autore in autori.split('\n'):
a = Autore()
toks = autore.split('|')
if len(toks) > 2:
variante = toks[2].strip()
qualificazione = toks[1]
else:
variante = '**'
qualificazione = '**'
aut = toks[0].strip()
a.autore = aut
a.variante = variante
a.qualificazione = qualificazione
context.catalogo_autori.catalog_object(a, aut)
===
creando un external method per la sola assegnazione degli attributi, può
funzionare?
*
Maggiori informazioni sulla lista
Plone-IT