2009-07-31 58 views
13

我有類SomeClass的屬性。例如idname如何列出所有類的屬性

class SomeClass(object): 
    def __init__(self): 
     self.__id = None 
     self.__name = None 

    def get_id(self): 
     return self.__id 

    def set_id(self, value): 
     self.__id = value 

    def get_name(self): 
     return self.__name 

    def set_name(self, value): 
     self.__name = value 

    id = property(get_id, set_id) 
    name = property(get_name, set_name) 

什麼是列表屬性的最簡單的方法?我需要這個序列化。

回答

22
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)] 
+0

非常好。謝謝。 – zinovii 2009-08-01 00:12:41

+0

唉,這會遺漏繼承的屬性......! – 2009-08-01 01:40:39

20
import inspect 

def isprop(v): 
    return isinstance(v, property) 

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)] 

inspect.getmembers得到繼承成員以及(和謂語選擇成員,在這裏我們編碼isprop,因爲它不是在模塊inspect了許多預定義的人當中,你也可以使用一個lambda,當然,如果你更喜歡)。

相關問題