如何在课堂上获得所有属性?

Bdf*_*dfy 1 python

class Test():
    test1 = 1
    def __init__(self):
        self.test2 = 2

r = Test()
print r.__dict__
print getattr(r,'test1')
Run Code Online (Sandbox Code Playgroud)

为什么我在__dict__字典中看不到test1属性?

fal*_*tru 5

instance.__dict__ 包含实例属性,而不是类属性.

要获取类属性,请使用Test.__dict__type(r).__dict__.

>>> r = Test()
>>> print r.__dict__
{'test2': 2}
>>> print Test.__dict__
{'test1': 1, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x000000000282B908>}
>>> print getattr(r,'test1')
1
Run Code Online (Sandbox Code Playgroud)

或者你可以使用vars:

>>> print vars(r)
{'test2': 2}
>>> print vars(Test)
{'test1': 1, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x000000000282B908>}
>>>
Run Code Online (Sandbox Code Playgroud)