代码之家  ›  专栏  ›  技术社区  ›  David Sykes

为什么我的实例变量不在dict中?

  •  33
  • David Sykes  · 技术社区  · 18 年前

    如果我创建一个类 A

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

    检查 __dict__ {'name': 'A'}

    但是如果我创建一个类 B :

    class B:
        name = 'B'
    

    __口述__ 是空的。

    两者之间有什么区别,为什么没有 name 出现在 B __口述__ ?

    2 回复  |  直到 15 年前
        1
  •  44
  •   Carl Meyer    13 年前

    B.name 是类属性,而不是实例属性。它出现在 B.__dict__ b = B(); b.__dict__ .

    b.name B.姓名

        2
  •  12
  •   Tendayi Mawushe    18 年前
    class A:
        def _ _init_ _(self):
            self.name = 'A'
    a = A()
    

    a.__dict__

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

    在类B上创建一个属性,该属性可以在 B.__dict__ 或者,如果您有一个类型为b的实例b,您可以在中看到类级别属性 b.__class__.__dict__