从类实例中获取用户定义的类属性

dan*_*lko 4 python python-3.x python-3.5

如何从类实例中获取用户定义的类属性?我试过这个:

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

a = A()

print(a.__dict__)  # {}
print(vars(a))  # {}
Run Code Online (Sandbox Code Playgroud)

我使用 python 3.5。有没有办法得到它们?我知道这会dir(a)返回一个包含属性名称的列表,但我只需要使用已定义,并作为值的字典名称。

Kas*_*mvd 5

您已经在类命名空间中定义了那些没有传播到实例中的变量。您可以使用__class__实例的属性来访问类对象,然后使用该__dict__方法获取命名空间的内容:

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


Nar*_*asK 1

尝试这个:

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