Python类变量是否在初始化第一个类实例之前初始化?
我还不知道需要时如何在Python文档中查找信息。如果有人能给我指出关于类变量初始化的部分,我将不胜感激我想知道类变量何时初始化。 我对此很感兴趣,因为我编写了一个类,该类在一个类变量中保存一个数据库连接,因此我希望确保在创建第一个类实例之前不会打开此连接 我意识到我可以通过最初将连接设置为None,然后在初始化第一个实例时,在其init方法中初始化它来实现这一点,但这似乎比它应该的复杂。我在以下情况下是否安全:Python类变量是否在初始化第一个类实例之前初始化?,python,Python,我还不知道需要时如何在Python文档中查找信息。如果有人能给我指出关于类变量初始化的部分,我将不胜感激我想知道类变量何时初始化。 我对此很感兴趣,因为我编写了一个类,该类在一个类变量中保存一个数据库连接,因此我希望确保在创建第一个类实例之前不会打开此连接 我意识到我可以通过最初将连接设置为None,然后在初始化第一个实例时,在其init方法中初始化它来实现这一点,但这似乎比它应该的复杂。我在以下情况下是否安全: class DatabaseConnection: connecti
class DatabaseConnection:
connection = DB_API.makeConnection()
...
类定义的说明是,作为执行类定义的步骤之一:
然后执行类的套件
(一个“套件”是一个代码块,即类定义的主体。)
因此,在定义类时,会立即执行类主体。对于类定义,执行类定义的步骤之一是:
然后执行类的套件
(一个“套件”是一个代码块,即类定义的主体。)
因此,在定义类时会立即执行类正文。在定义类时会执行类正文,因此在导入包含该类的模块时,将立即创建连接。@tzaman谢谢。介意告诉我你是怎么知道的吗?这个很有用。您也可以尝试在那里放置一个
打印文件,看看会发生什么。定义类时会执行类体,因此在导入包含该类的模块时会立即创建连接。@tzaman谢谢。介意告诉我你是怎么知道的吗?这个很有用。你也可以试着把打印出来
,看看会发生什么。