Tengo un objeto python con varios atributos y métodos. Quiero iterar sobre los atributos del objeto.Iterar sobre los atributos del objeto en python
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
Quiero generar un diccionario que contiene todos los objetos atributos y sus valores actuales, pero quiero hacerlo de una manera dinámica (por lo que si más adelante agrego otro atributo que 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 puntos para esto se crea un nuevo atributo con el nombre de mi var, que no es mi intención.
para hacer las cosas más claras:
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 únicamente las variables de este objeto, no los métodos.
http://stackoverflow.com/questions/1251692/how- enumerar-un-objetos-propiedades-en-python Podría ser de alguna ayuda. – sean
@sean En particular, http://stackoverflow.com/a/1251789/4203 es el camino a seguir; usarías el argumento opcional 'predicate' para pasar un invocable que filtraría (atada?) las funciones (que se deshace de los métodos). –