Tengo un objeto python con varios atributos y métodos. Quiero iterar sobre los atributos del objeto.
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
Quiero generar un diccionario que contenga todos los atributos de los objetos y sus valores actuales, pero quiero hacerlo de forma dinámica (así que si luego agrego otro atributo, no tengo que recordar actualizar mi función también).
En php, las variables se pueden usar como claves, pero los objetos en python no se pueden usar y si uso la notación de punto para esto, crea un nuevo atributo con el nombre de mi var, que no es mi intención.
Solo para aclarar las cosas:
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
Actualización: con atributos me refiero solo a las variables de este objeto, no a los métodos.
predicate
argumento opcional para pasar un invocable que filtraría (¿enlazado?) funciones (que elimina los métodos).