2016-12-07 14 views
1

クラスインスタンスからユーザ定義のクラス属性を取得するにはどうすればよいですか?私はこれを試しました:クラスインスタンスからユーザ定義のクラス属性を取得する

class A: 
    FOO = 'foo' 
    BAR = 'bar' 

a = A() 

print(a.__dict__) # {} 
print(vars(a)) # {} 

私はpython 3.5を使用します。 入手方法はありますか? 私はdir(a)が属性の名前を持つリストを返すことを知っていますが、定義されたものだけを使用し、値にはディクテーション名を使用する必要があります。あなたはインスタンスに伝播されていないクラスの名前空間の中にこれらの変数を定義した

In [5]: [x for x in dir(a) if not x.startswith('__')] 
Out[5]: ['BAR', 'FOO'] 

答えて

0

はこれを試してみてください。その後、名前空間の内容を取得するために__dict__メソッドを使用して、クラスのオブジェクトにアクセスするには、インスタンスの__calss__属性を使用することができます。

>>> {k: v for k, v in a.__class__.__dict__.items() if not k.startswith('__')} 
{'BAR': 'bar', 'FOO': 'foo'} 
0

+0

私はそれはまた、親から属性を返す必要があることを言及するのを忘れて – danielko

関連する問題