关于python:classinstance .__ dict__返回空字典

classinstance.__dict__ returns empty dictionary

本问题已经有最佳答案,请猛点这里访问。

当我定义一个已经分配了变量的类,实例化它并使用__dict__获取变量作为字典时,我得到一个空列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
In [5]:

class A(object):
    a = 1
    b = 2
    text ="hello world"

    def __init__(self):
        pass

    def test(self):
        pass

x = A()
x.__dict__

Out[5]:
{}

但当我在__init__中声明变量并使用__dict__时,它返回类实例化后分配的变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
In [9]:

class A(object):
    a = 1
    def __init__(self):
        pass

    def test(self):
        self.b = 2
        self.text ="hello world"


x = A()
x.test()
x.__dict__

Out[9]:
{'b': 2, 'text': 'hello world'}

为什么__dict__只返回类实例化后声明的变量

编辑答案:

当创建像x = A()这样的实例时

x.__dict__存储所有实例属性。

A.__dict__存储类属性


请尝试A.__dict__获取所有类属性,

1
2
x = A()
x.__dict__

这里,您正在对的实例调用__dict__方法。因此,应该显示与该实例关联的变量…

self.bself.text是仅特定于特定实例的实例变量。