2009-07-31 12 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

+0

ああ、これは継承されたプロパティが欠けてしまう...! –

+0

私はこれを試して、継承されたクラスに対してもうまく動作します。 – zinovii

20
import inspect 

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

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

inspect.getmembersが同様に継承されたメンバーを取得します(と述語によってメンバーを選択し、それはモジュールinspectには多くのあらかじめ定義されたものの中ではないので、ここではispropをコード化された、あなたはまた、もちろん、lambdaを使用することができ、あなたが好きなら)。

+0

これはまた動作します。ありがとうございました – zinovii

関連する問題