Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的实例变量不在dict中?_Python - Fatal编程技术网

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

Python 为什么我的实例变量不在dict中?,python,Python,如果我创建一个类a,如下所示: class A: def __init__(self): self.name = 'A' 检查\uuu dict\uuu成员看起来像{'name':'A'} 但是,如果我创建一个类B: class B: name = 'B' \uuuu dict\uuuu为空 这两者之间有什么区别,为什么name不出现在B的\uuu dict\uuuu中?B.name是类属性,而不是实例属性。它显示在B.uuu dict_uuu中,但不显示在B

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

class A:
    def __init__(self):
        self.name = 'A'
检查
\uuu dict\uuu
成员看起来像
{'name':'A'}

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

class B:
    name = 'B'
\uuuu dict\uuuu
为空


这两者之间有什么区别,为什么
name
不出现在
B
\uuu dict\uuuu
中?

B.name
是类属性,而不是实例属性。它显示在
B.uuu dict_uuu
中,但不显示在
B=B()中;b、 _uuudict_uuu

这种区别有些模糊,因为当您访问实例上的属性时,类dict是一种后备方法。因此,在上面的示例中,
b.name
将为您提供
b.name
的值

class A:
    def _ _init_ _(self):
        self.name = 'A'
a = A()
在类型为a的对象实例a上创建属性,因此可以在以下位置找到该属性:
a.。\uuuu dict\uuuu

class B:
    name = 'B'
b = B()
在类B上创建一个属性,该属性可以在
B中找到。或者,如果您有类型B的实例B,您可以在
B中看到类级别的属性。类

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