如何从类实例中获取用户定义的类属性?我试过这个:
class A:
FOO = 'foo'
BAR = 'bar'
a = A()
print(a.__dict__) # {}
print(vars(a)) # {}
我使用的是python 3.5。
有办法获得它们吗?
我知道dir(a)
返回一个包含属性名称的列表,但我只需要使用已定义的,并且作为值的dict名称。
答案 0 :(得分:2)
您已在类名称空间中定义了那些尚未传播到实例中的变量。您可以使用实例的__calss__
属性来访问类对象,然后使用__dict__
方法获取命名空间的内容:
>>> {k: v for k, v in a.__class__.__dict__.items() if not k.startswith('__')}
{'BAR': 'bar', 'FOO': 'foo'}
答案 1 :(得分:0)
试试这个:
In [5]: [x for x in dir(a) if not x.startswith('__')]
Out[5]: ['BAR', 'FOO']