English 中文(简体)
为什么我的实例变量不在__dict__中?
原标题:
  • 时间:2008-08-30 09:12:41
  •  标签:

如果我创建一个类a,如下所示:

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

检查__dict__成员看起来像{name:A}

但是,如果我创建了一个类B

class B:
    name =  B 

__dict__为空。

两者之间的区别是什么?为什么t<code>name</code>会出现在<code>B</code<s<code>__dict__</code>中?

最佳回答

<code>B.name</code>是一个类属性,而不是实例属性。它显示在<code>B中__dict__,但不在b=b()中;b.__dict__

这种区别在某种程度上被掩盖了,因为当您访问实例上的属性时,类dict是一种回退。因此,在上面的例子中,<code>b.name</code>将为您提供<code>b.name</code>的值。

问题回答
class A:
    def _ _init_ _(self):
        self.name =  A 
a = A()

在类型为a的对象实例a上创建一个属性,因此它可以在:<code>a中找到__格言__

class B:
    name =  B 
b = B()

在类B上创建一个属性,该属性可以在<code>B中找到__dict__或者,如果您有一个类型为b的实例b,您可以在b中看到类级别的属性__类别____格言__





相关问题
热门标签