python类属性是何时创建的

python类属性是何时创建的,python,Python,我知道在创建实例时,bar是在\uuuu init\uuuu之前创建的, 我想知道在创建时是否首先创建bar属性 Foo的一个例子。 此外,在创建任何实例之前,该条是否已经存在于内存中?这些属性存储在类本身的\uuuuuuuuuuuuuuuuuuuuuuuuuu中。除非您手动分配,否则实例(或者更确切地说,实例的\uu dict\uuu)上永远不存在它们 例如,如果在方法中使用self.bar+=1,则将从类级别变量中读取1,并将2分配给实例级别变量。下次运行此语句时,bar存在于实例级别,因此

我知道在创建实例时,bar是在
\uuuu init\uuuu
之前创建的, 我想知道在创建时是否首先创建bar属性 Foo的一个例子。
此外,在创建任何实例之前,该条是否已经存在于内存中?

这些属性存储在类本身的
\uuuuuuuuuuuuuuuuuuuuuuuuuu
中。除非您手动分配,否则实例(或者更确切地说,实例的
\uu dict\uuu
)上永远不存在它们


例如,如果在方法中使用
self.bar+=1
,则将从类级别变量中读取
1
,并将
2
分配给实例级别变量。下次运行此语句时,
bar
存在于实例级别,因此您可以读取
2
并将其替换为
3

将在构造函数(init)之前分配状态变量。所以


不过,在巴托被分配之前,他会看到bar的值为1。我猜你的问题是“如果我在构造函数之前分配了一个状态变量,我可以在构造函数中使用它吗?是的。

记住,在Python中,
是一个可执行语句(同样是
def
import
)因此,您的问题的答案是,
bar
是在执行
class
语句时创建的

具体地说,当执行
语句时,类的主体在通常只是
dict
的名称空间中执行。当主体完成执行后,将创建一个类对象,并将生成的
dict
的副本作为类的
\uuu dict\uuu
属性。 例如,此时的dict包含绑定在类主体
bar=1
中的所有名称,但也包含在类主体中定义的所有函数


创建实例时,不会得到
bar
的副本,它们只是引用类。当您在实例上查找名称时,Python会同时查看实例的
\uuuuu dict\uuuuu
和类的
\uuuuuu dict\uuuuuu

等内容。我主要好奇的是,当涉及到此类内容时,bar pro在创建任何实例之前,perty得到的是记忆?对我来说是一个完美的答案。谢谢Duncan
class Foo:
   bar = 1
   ......etc.
    Class Foo:
        bar = 1
        def __init__(self):
            bartwo = 2