2011-03-17 90 views
9

Me gustaría mostrar los atributos de un objeto give y me preguntaba si había una función python para él. Por ejemplo si yo tuviera un objeto de la clase siguiente:mostrar los atributos de un objeto en python

class Antibody(): 

    def __init__(self,toSend): 

     self.raw = toSend 
     self.pdbcode = '' 
     self.year = '' 

¿Puedo obtener una salida que se ve algo como esto o algo similar:

['self.raw','self.pdbcode','self.year'] 

gracias

Respuesta

8

Los siguientes impresiones método ['self.pdbcode', 'self.raw', 'self.year'] para una instancia de su clase:

class Antibody(): 
    ... 
    def get_fields(self): 
     ret = [] 
     for nm in dir(self): 
      if not nm.startswith('__') and not callable(getattr(self, nm)): 
       ret.append('self.' + nm) 
     return ret 

a = Antibody(0) 
print a.get_fields() 
+1

agradable - me gusta el 'no exigible (... truco – theheadofabroom

+0

muchas gracias thi s es justo lo que necesito. Gracias por la explicación completa – Anake

15

Trate dir(self). Incluirá todos los atributos, no solo "datos".

2

gusta esta

class Antibody: 
    def __init__(self,toSend): 
     self.raw = toSend 
     self.pdbcode = '' 
     self.year = '' 
    def attributes(self): 
     return [ 'self.'+name for name in self.__dict__ ] 
+0

¡Gracias, estoy votando también por brevedad! – Anake

0

a = Antibody(0)

map(lambda attr: 'self.%s'%(attr), filter(lambda attr: not callable(getattr(a, attr)), a.__dict__))

Cuestiones relacionadas