отображать атрибуты объекта в python - PullRequest
9 голосов
/ 17 марта 2011

Я хотел бы отобразить атрибуты данного объекта и мне было интересно, есть ли для него функция python. Например, если у меня был объект из следующего класса:

class Antibody():

    def __init__(self,toSend):

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

Могу ли я получить вывод, который выглядит примерно так или примерно так:

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

спасибо

Ответы [ 4 ]

15 голосов
/ 17 марта 2011

Попробуйте dir(self).Он будет включать все атрибуты, а не только «данные».

8 голосов
/ 17 марта 2011

Следующий метод печатает ['self.pdbcode', 'self.raw', 'self.year'] для экземпляра вашего класса:

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()
2 голосов
/ 17 марта 2011

Как это

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 голосов
/ 17 марта 2011

a = Antibody(0)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...