2011-03-17 11 views
9

Chciałbym wyświetlić atrybuty obiektu dawania i zastanawiałem się, czy istnieje dla niego funkcja python. Na przykład, gdybym miał obiekt z następujących klas:wyświetlać atrybuty obiektu w pythonie

class Antibody(): 

    def __init__(self,toSend): 

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

mogę dostać sygnał wyjściowy, który wygląda mniej więcej tak lub coś podobnego:

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

dzięki

Odpowiedz

8

następujące wydruki metoda ['self.pdbcode', 'self.raw', 'self.year'] dla instancji klasy:

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

Nicea - lubię 'nie wymagalne (... 'sztuczka – theheadofabroom

+0

dziękuję bardzo s jest właśnie tym, czego potrzebuję. Dziękuję za pełne wyjaśnienie. – Anake

15

Spróbuj dir(self). Będzie zawierał wszystkie atrybuty, nie tylko "dane".

2

Ci się to

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

Dziękuję, że również głosuję za zwięzłością! – Anake

0

a = Antibody(0)

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

Powiązane problemy