Why is my instance variable not in __dict__?

后端 未结 2 1207
旧巷少年郎
旧巷少年郎 2020-12-29 19:30

If I create a class A as follows:

class A:
    def __init__(self):
        self.name = \'A\'

Inspecting the __dict__

相关标签:
2条回答
  • 2020-12-29 19:52
    class A:
        def _ _init_ _(self):
            self.name = 'A'
    a = A()
    

    Creates an attribute on the object instance a of type A and it can therefore be found in: a.__dict__

    class B:
        name = 'B'
    b = B()
    

    Creates an attribute on the class B and the attribute can be found in B.__dict__ alternatively if you have an instance b of type B you can see the class level attributes in b.__class__.__dict__

    0 讨论(0)
  • 2020-12-29 19:58

    B.name is a class attribute, not an instance attribute. It shows up in B.__dict__, but not in b = B(); b.__dict__.

    The distinction is obscured somewhat because when you access an attribute on an instance, the class dict is a fallback. So in the above example, b.name will give you the value of B.name.

    0 讨论(0)
提交回复
热议问题