Ho un oggetto Python con diversi attributi e metodi. Voglio scorrere gli attributi degli oggetti.
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
Voglio generare un dizionario contenente tutti gli attributi degli oggetti e i loro valori correnti, ma voglio farlo in modo dinamico (quindi se in seguito aggiungo un altro attributo non devo ricordare di aggiornare anche la mia funzione).
In php le variabili possono essere usate come chiavi, ma gli oggetti in Python sono insuperabili e se uso la notazione punto per questo crea un nuovo attributo con il nome del mio var, che non è il mio intento.
Giusto per chiarire le cose:
def to_dict(self):
'''this is what I already have'''
d={}
d["attr1"]= self.attr1
d["attr2"]= self.attr2
d["attr3"]= self.attr3
return d
·
def to_dict(self):
'''this is what I want to do'''
d={}
for v in my_python_obj.attributes:
d[v] = self.v
return d
Aggiornamento: Con attributi intendo solo le variabili di questo oggetto, non i metodi.
predicate
argomento opzionale per passare un callable che filtrerebbe le funzioni (associate?) (che eliminano i metodi).