Python类变量是否在初始化第一个类实例之前初始化?

Python类变量是否在初始化第一个类实例之前初始化?,python,Python,我还不知道需要时如何在Python文档中查找信息。如果有人能给我指出关于类变量初始化的部分,我将不胜感激我想知道类变量何时初始化。 我对此很感兴趣,因为我编写了一个类,该类在一个类变量中保存一个数据库连接,因此我希望确保在创建第一个类实例之前不会打开此连接 我意识到我可以通过最初将连接设置为None,然后在初始化第一个实例时,在其init方法中初始化它来实现这一点,但这似乎比它应该的复杂。我在以下情况下是否安全: class DatabaseConnection: connecti

我还不知道需要时如何在Python文档中查找信息。如果有人能给我指出关于类变量初始化的部分,我将不胜感激我想知道类变量何时初始化。

我对此很感兴趣,因为我编写了一个类,该类在一个类变量中保存一个数据库连接,因此我希望确保在创建第一个类实例之前不会打开此连接

我意识到我可以通过最初将连接设置为None,然后在初始化第一个实例时,在其init方法中初始化它来实现这一点,但这似乎比它应该的复杂。我在以下情况下是否安全:

class DatabaseConnection:   
    connection = DB_API.makeConnection()
    ...
类定义的说明是,作为执行类定义的步骤之一:

然后执行类的套件

(一个“套件”是一个代码块,即类定义的主体。)

因此,在定义类时,会立即执行类主体。

对于类定义,执行类定义的步骤之一是:

然后执行类的套件

(一个“套件”是一个代码块,即类定义的主体。)


因此,在定义类时会立即执行类正文。

在定义类时会执行类正文,因此在导入包含该类的模块时,将立即创建连接。@tzaman谢谢。介意告诉我你是怎么知道的吗?这个很有用。您也可以尝试在那里放置一个
打印文件
,看看会发生什么。定义类时会执行类体,因此在导入包含该类的模块时会立即创建连接。@tzaman谢谢。介意告诉我你是怎么知道的吗?这个很有用。你也可以试着把
打印出来
,看看会发生什么。