Marco De Paoli, alle 12:06 del 24/04/2015, digitò:
Il giorno 24 aprile 2015 11:51, Gabriele Battaglia <iz4...@libero.it
<mailto:iz4...@libero.it>> ha scritto:
Scrivo questo codice e non capisco il perchè dell'errore finale.
d={1:34,2:22} d
{1: 34, 2: 22}
for k,v in d.items():
... print k,v ... 1 34 2 22
for k,v in vars.items():
... print k,v ... Traceback (most recent call last): File
"<console>", line 1, in <module> AttributeError:
'builtin_function_or_method' object has no attribute 'items' ***
in effetti vars è una funzione built-in
https://docs.python.org/2/library/functions.html#vars
per cui quello che ti sta dicendo python è giusto
Ma vars risulta di type dict(), quindi... non dovrebbe avere anche
lui il suo bravo .items?
in realtà il valore di ritorno di vars è di tipo dict vars, in se, è
una funzione, per cui devi chiamarla passandogli un argomento che
abbia un attributo __dict__
E se non ce l'ha, come faccio ad iterare attraverso gli elementi di
vars?
ma tu cosa volevi fare esattamente? d.items non ti andava bene?
Ciao Marco e grazie per i suggerimenti.
Ho una classe con un numero n di parametri, poniamo siano 20.
Poi ho una lista che ne contiene alcuni, mettiamo 10.
Nella fase di inizializzazione delle istanze, mi serve copiare tutti i
parametri il cui nome è contenuto nella lista, in un dizionario. Per
questo devo risalire al nome dei parametri ed al loro valore, attraverso
vars()
Ho scritto questo codice, che funziona:
self.inv = {}
for k, v in vars().items():
if k in INVECCHIABILI:
self.inv[k] = v
Così il dizionario self.inv, contiene tutte quelle voci che
rappresentano una copia dei parametri iniziali.
Grazie giovanni P per il metodo di chiamata di vars().itmes()
GB.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python