2011-03-17 134 views
9

我想顯示給定對象的屬性,並想知道是否有python函數。 例如,如果我從下面的類的對象:在python中顯示對象的屬性

class Antibody(): 

    def __init__(self,toSend): 

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

我能得到一個輸出看起來是這樣的或類似的東西:

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

感謝

回答

8

以下方法打印['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() 
+1

不錯 - 我喜歡'不可調用( ...'技巧 – theheadofabroom 2011-03-17 14:31:13

+0

非常感謝這正是我需要的。感謝您的全面解釋 – Anake 2011-03-17 14:33:26

15

嘗試dir(self)。它將包含所有屬性,不僅包含「數據」。

2

喜歡這個

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

謝謝我爲了簡潔而投票贊成! – Anake 2011-03-17 17:04:47

0

a = Antibody(0)

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

相關問題