python – 仅初始化类变量一次

class db: 

      global_ids = {}
      global_mappings = {}
      def __init__:

          db_client     = sth sth #clinet to mongo db
          db_connection = sth sth #connection to mongo db 
          db_coll        = sth sth

我需要一些类变量(全局ID和全局映射),只能为类db初始化一次,而db类的所有其他实例都可以使用它.

类变量的值必须使用一些查找数据库的函数来计算.我怎样才能构建我的课程?

最佳答案 您始终可以测试是否先设置了这些值;如果您没有使用如下简单的线程:

class db: 
      global_ids = {}
      global_mappings = {}

      def __init__(self):
          self.db_client     = sth sth #clinet to mongo db
          self.db_connection = sth sth #connection to mongo db 
          self.db_coll        = sth sth

          if not db.global_ids:
              # set key-value pairs on db.global_ids

          if not db.global_mappings:
              # set key-value pairs on db.global_mappings

这样,您可以在第一次创建类的实例之前将这些类属性设置为defer.

当然,您也可以在定义类时选择设置相同的值.

点赞