2011-03-17 47 views
9

Tôi muốn hiển thị các thuộc tính của đối tượng cung cấp và đã tự hỏi liệu có hàm python cho nó hay không. Ví dụ nếu tôi có một đối tượng từ lớp sau:hiển thị các thuộc tính của đối tượng trong python

class Antibody(): 

    def __init__(self,toSend): 

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

Tôi có thể nhận được một đầu ra mà trông giống như thế này hay một cái gì đó tương tự:

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

nhờ

Trả lời

8

Phương pháp in sau ['self.pdbcode', 'self.raw', 'self.year'] cho một thể hiện của lớp học của bạn:

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

đẹp này - Tôi thích 'không callable (... 'lừa – theheadofabroom

+0

cảm ơn rất nhiều s chỉ là những gì tôi cần. Cảm ơn lời giải thích đầy đủ – Anake

15

Hãy thử dir(self). Nó sẽ bao gồm tất cả các thuộc tính, không chỉ "dữ liệu".

2

Giống như

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

Cảm ơn tôi đang bỏ phiếu này cũng như cho ngắn gọn! – Anake

0

a = Antibody(0)

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

Các vấn đề liên quan